2016-02-05 72 views
12

我有一个MKMapView问题。地图加载失败砖,当我放大它MKMapView无法加载具有HTTP 410错误的图块

-(void)mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)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=11037825&z=15&x=6205&y=12336&sid=0246704635757302674107153038443966765357&accessKey=1454685602_q3bVUYvHBdxsSo0A_j0fK7EyQ9b21NPShV7GRLzr4WFkkhxB4vO7%2BlXcGsXJ4zZHvhTaLVWsyPa3PlU60cDrmrFwmwCYBGrLA9mChV%2FHoRHoTU9AGI72VQP9UKZW%2B0GKqfRhpcw4xr%2F%2FTTVgJZ7wU4U4KnA8K2rVVQ%2FOfFHJq7OO4nYecTvy0ur4I9D3Sxf%2Btn9DcXU8agDRJignB }", ...

编辑: 好像它被以某种方式缓存相关的,但我不知道。加载相同的地图区域后,此问题在一段时间内消失地图应用程序。

在此先感谢

回答

4

我的Mac OS X MKMapView基础的应用也已经没有放大时加载的瓷砖。它已经在过去几周内变得更糟。我没有记录下mapViewDidFailLoadingMap:错误,但我刚开始这样做。

要检查它不是我的代码,我在XCode中创建了一个完全空白的Mac OS X测试应用程序。这有一个单一的MKMapView使用接口生成器放置在一个窗口中。我的应用程序中没有任何代码。这个测试应用程序也出现这个问题。

尽管MKMapView无法显示拼贴,但Maps.app应用程序正在完美显示拼贴。所以这不是我的互联网连接。

我在笔记本电脑上运行,并且怀疑计算机完全重新引导后的时间越长,问题越严重。例如。我通常只关上盖子,电脑在晚上睡觉。昨晚完全重新启动解决了问题,并且正在正确加载磁贴。

一些进一步的信息:

  • 我的应用程序的最小部署目标是Mac OS X的10.11
  • 试验正在对OS X埃尔卡皮坦运行10.11.3
  • 地图是混合动力模式。
  • 重新启动应用程序不能解决问题。
  • 位置:英国
  • 问题发生在谷歌的DNS和我的ISP的DNS。

如果问题重新出现,我会提交一个错误报告。

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

更新(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上。 Apple刚刚将我的错误报告标记为另一个错误报告的副本。

更新(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)发生的问题。不过,我已经看到我同时打开的所有地图视图都刷新了它们的图块。因此我怀疑这个问题可能被检测到,并且磁贴缓存被清除。

12

我分析和描述对苹果开发者论坛的问题:https://forums.developer.apple.com/thread/43077


有一个与iOS上MapKit一个问题 - 地图有时无法加载,加载部分,对于瓷砖显示纯网格中的另一个时间未能加载。在使用MapKit的每个应用程序中,即使在Apple地图应用程序中,系统范围内也会出现问题。在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错误。

出现下列问题:为什么com.apple.geod,地质服务或MapKit不尝试查询新geo_manifest瓦时请求引起410回应?这是一个已知的问题吗?苹果计划在未来的iOS版本中解决这个问题吗?

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

+1

这种情况经常发生在旧的测试设备上。 '强制更新'解决了它。 –