MKMapView无法加载具有HTTP 410错误的切片

mik*_*tka 12 macos mapkit mkmapview ios

我有问题MKMapView.放大时,地图无法加载切片.

-(void)mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error 
Run Code Online (Sandbox Code Playgroud)

错误:

Domain = GEOErrorDomain Code = -204"(null)"UserInfo = {SimpleTileRequesterUnderlyingErrors =("Error Domain = GEOErrorDomain Code = -204 \"(null)\"UserInfo = {HTTPStatus = 410,NSErrorFailingURLStringKey = http://gspe19.ls .apple.com/tile.vf?标志= 1&式= 20&大小= 2&规模= 0&v = 11037825&Z = 15&x = 6205&Y = 12336&SID = 0246704635757302674107153038443966765357&ACCESSKEY = 1454685602_q3bVUYvHBdxsSo0A_j0fK7EyQ9b21NPShV7GRLzr4WFkkhxB4vO7%2BlXcGsXJ4zZHvhTaLVWsyPa3PlU60cDrmrFwmwCYBGrLA9mChV%2FHoRHoTU9AGI72VQP9UKZW%2B0GKqfRhpcw4xr%2F%2FTTVgJZ7wU4U4KnA8K2rVVQ%2FOfFHJq7OO4nYecTvy0ur4I9D3Sxf%2Btn9DcXU8agDRJignB }",...

编辑: 似乎它以某种方式与缓存有关,但我不确定.在地图应用程序中加载相同的地图区域后,此问题会消失一段时间.

提前致谢

kam*_*800 13

我在Apple开发者论坛上分析并描述了这个问题:https://forums.developer.apple.com/thread/43077


iOS上的MapKit存在问题 - 地图有时无法加载,另一次是部分加载,显示无法加载的图块的普通网格.即使在Apple Maps应用程序中,每个使用MapKit的应用程序都会在系统范围内出现问题.iPhone(6+)和iPad(iPad Air,iPad Air 2,iPad Mini)和一系列iOS版本(9.0,9.0.2,9.2.1)都会出现问题.此外,当地图缩放很高时,似乎更经常发生.问题很难再现,因为它看起来是随机发生的,持续存在于受影响的设备上一段时间后会突然消失.

我设法分析网络流量,并找到了这种奇怪行为的可能原因.与丢失的磁贴相关联的网络请求失败,HTTP状态代码410和空内容:

GET http://gspe19.ls.apple.com/tile.vf?flags=1&style=13&size=2&scale=0&v=11040322&z=15&x=17923&y=10756&sid=SOME_SID_1&accessKey=SOME_ACCESS_KEY_1 <- 410  
GET http://gspe19.ls.apple.com/tile.vf?flags=1&style=20&size=2&scale=0&v=11040322&z=15&x=17923&y=10756&sid=SOME_SID_1&accessKey=SOME_ACCESS_KEY_1 <- 410  
...  
Run Code Online (Sandbox Code Playgroud)

'v'参数似乎是地图版本号并随时间增长.看起来版本号可能会在"geo_manifest"网络调用之后发生变化,这种情况会不时发生:

GET https://gspe35-ssl.ls.apple.com/geo_manifest/dynamic/config?application=geod&application_version=1&country_code=PL&hardware=iPad4,2&os=ios&os_build=13C75&os_version=9.2  
Run Code Online (Sandbox Code Playgroud)

下载新的geo_manifest后,版本号再次变为有效,并且每个tile请求都成功结束,状态码为200:

GET http://gspe19.ls.apple.com/tile.vf?flags=1&style=13&size=2&scale=0&v=11040529&z=15&x=17923&y=10756&sid=SOME_SID_2&accessKey=SOME_ACCESS_KEY_2 <- 200  
GET http://gspe19.ls.apple.com/tile.vf?flags=1&style=20&size=2&scale=0&v=11040529&z=15&x=17923&y=10756&sid=SOME_SID_2&accessKey=SOME_ACCESS_KEY_2 <- 200  
...  
Run Code Online (Sandbox Code Playgroud)

我使用lldb来确认,陈旧的geo_manifest是410响应的原因.我在使用Xcode显示症状的设备上运行了一个任意应用程序.MKMapView上缺少一些图块,网络流量中出现410个响应.我关闭了地图,用lldb暂停执行,执行了一个私有的GeoService框架方法,似乎强制geo_manifest更新:

(lldb) po [[GEOResourceManifestManager sharedManager] forceUpdate]  
Run Code Online (Sandbox Code Playgroud)

恢复执行后,geo_manifest更新请求出现在网络流量中.打开地图视图后,出现成功的切片响应并且地图已完全加载.看起来com.apple.geod守护程序本身无法不时地查询新的geo_manifest.因为问题是如此短暂,所以在设备控制台日志中找不到任何com.apple.geod错误是不可能的.

出现以下问题:为什么当tile请求导致410响应时,com.apple.geod,GeoServices或MapKit不会尝试查询新的geo_manifest?这是一个已知问题吗?Apple计划在未来的iOS版本中修复此问题吗?

编辑:已 在iOS 10中修复(https://openradar.appspot.com/radar?id=6075032430182400).


小智 4

我的基于 Mac OS XMKMapView的应用程序在放大时也无法加载图块。过去几周情况变得更糟。我还没有记录mapViewDidFailLoadingMap:错误,但我刚刚开始这样做。

为了检查它不是我的代码,我在 XCode 中从头开始创建了一个完全空的 Mac OS X 测试应用程序。使用界面生成器将其MKMapView放置在单个窗口中。应用程序中没有任何代码是我编写的。该测试应用程序也显示了该问题。

虽然MKMapView在显示图块时遇到问题,但Maps.app应用程序可以完美地显示图块。所以这不是我的互联网连接。

我在笔记本电脑上运行,我怀疑计算机完全重新启动后的时间越长,问题就会变得更严重。例如,我通常只需合上盖子,计算机就会在晚上睡觉。昨晚完全重新启动解决了问题,并且当前可以正确加载图块。

一些进一步的信息:

  • 我的应用程序的最低部署目标是 Mac OS X 10.11
  • 测试在 OS X El Capitan 10.11.3 上运行
  • 地图处于混合模式。
  • 重新启动应用程序并不能解决问题。
  • 地点:英国
  • 谷歌的 DNS 和我的 ISP 的 DNS 都会出现问题。

如果问题再次出现,我将提交错误报告。

更新(2016 年 2 月 6 日):已向developer.apple.com 提交了一份错误报告,详细说明了我所看到的情况。建议遇到该问题的其他人也使用您拥有的任何数据向苹果提交错误报告。因为这对他们来说很难复制。

更新(2016 年 2 月 7 日):昨晚笔记本电脑睡觉后,问题再次出现。现在我正在记录mapViewDidFailLoadingMap:消息,我看到如下错误:

错误域=GEOErrorDomain代码=-204“(null)”UserInfo={SimpleTileRequesterUnderlyingErrors=(“错误域=GEOErrorDomain代码=-204\”(null)\”UserInfo={HTTPStatus=410,NSErrorFailingURLStringKey= http://gspe19。 ls.apple.com/tile.vf?flags=1&style=20&size=2&scale=0&v=...&z=...&x=...&y=...&sid=...&accessKey= ...}" , ...

已使用新信息更新了developer.apple.com 错误报告。

更新(2016 年 4 月 5 日): OS X 10.11.4 上仍然存在问题。苹果刚刚将我的错误报告标记为另一个错误报告的重复。

更新(2016 年 5 月 20 日): OS X 10.11.5 中仍然存在问题。

更新(2016 年 7 月 23 日):该问题在 OS X 10.11.6 中仍然存在。已更新我的developer.apple.com 错误报告,其中包含问题仍然存在的信息。

更新(2016 年 1 月 3 日):到目前为止,我还没有看到 macOS 10.12 (Sierra) 中出现此问题。但是,我看到我打开的所有地图视图同时刷新了它们的图块。因此我怀疑问题可能已被检测到并且切片缓存已被清除。