MKMapView 无法加载带有 HTTP 410 错误的磁贴



我对MKMapView有问题。地图在放大时无法加载图块。

-(void)mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error 

错误:

Domain=GEOErrorDomain Code=-204 "(null(" UserInfo={SimpleTileRequesterUnderlyingErrors=( "错误域=GEOError域代码=-204 \"(空(\" UserInfo={HTTPStatus=410, NSErrorFailingURLStringKey=http://gspe19.ls.apple.com/tile.vf?flags=1&style=20&size=2&scale=0&v=11037825&z=15&x=6205&y=12336&sid=0246704635757302674107153038443966765357&accessKey=1454685602_q3bVUYvHBdxsSo0A_j0fK7EyQ9b21NPShV7GRLzr4WFkkhxB4vO7%2BlXcGsXJ4zZHvhTaLVWsyPa3PlU60cDrmrFwmwCYBGrLA9mChV%2FHoRHoTU9AGI72VQP9UKZW%2B0GKqfRhpcw4xr%2F%2FTTVgJZ7wU4U4KnA8K2rVVQ%2FOfFHJq7OO4nYecTvy0ur4I9D3Sxf%2Btn9DcXU8agDRJignB}", ...

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

提前致谢

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


iOS 上的 MapKit 存在问题 - 地图有时无法加载,有时它会部分加载,为加载失败的磁贴显示普通网格。这个问题发生在每个使用MapKit的应用程序的系统范围内,甚至在Apple Maps应用程序中也是如此。该问题发生在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  
...  

"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  

下载新geo_manifest后,版本号再次生效,并且每个磁贴请求都以 HTTP 状态代码 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  
...  

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

(lldb) po [[GEOResourceManifestManager sharedManager] forceUpdate]  

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

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

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

My Mac OS X 基于 MKMapView 的应用程序在放大时也无法加载磁贴。 在过去的几周里,情况越来越糟。 我没有记录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 提交了一份错误报告,详细说明了我所看到的内容。 建议遇到此问题的其他人也向Apple提交错误报告,其中包含您拥有的任何数据。 因为这对他们来说可能很难复制。

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

Error Domain=GEOErrorDomain Code=-204 "(null(" UserInfo={SimpleTileRequesterUnderlyingErrors=( "Error Domain=GEOErrorDomain Code=-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(中出现的问题。但是,我已经看到我打开的所有地图视图同时刷新了它们的磁贴。 因此,我怀疑可能检测到该问题并清除了切片缓存。

相关内容

最新更新