MKMapView 有问题。 map 在放大时无法加载图 block 。
-(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}", ...
编辑: 似乎它以某种方式与缓存有关,但我不确定。在 Maps 应用程序中加载同一 map 区域后,此问题会消失一段时间。
提前致谢
最佳答案
我在苹果开发者论坛上分析描述了问题:https://forums.developer.apple.com/thread/43077
iOS 上的 MapKit 存在问题 - map 有时无法加载,有时会部分加载,为加载失败的图 block 显示普通网格。这个问题在整个系统范围内发生在每个使用 MapKit 的应用程序中,甚至在 Apple Maps 应用程序中也是如此。 iPhone (6+) 和 iPad(iPad Air、iPad Air 2、iPad Mini)以及一系列 iOS 版本(9.0、9.0.2、9.2.1)都会出现此问题。此外,本地图缩放比例较高时,这种情况似乎更常发生。该问题很难重现,因为它看起来是随机发生的,会在受影响的设备上持续一段时间然后突然消失。
我设法分析了网络流量并找到了这种奇怪行为的可能原因。与丢失的图 block 关联的网络请求失败,并返回 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' 参数似乎是一个 map 版本号,并且随着时间的推移而增长。看起来版本号会在“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 上缺少一些图 block ,网络流量中出现 410 响应。我关闭了 map ,暂停了 lldb 的执行,执行了一个似乎强制更新 geo_manifest 的私有(private) GeoService 框架方法:
(lldb) po [[GEOResourceManifestManager sharedManager] forceUpdate]
恢复执行后,geo_manifest 更新请求出现在网络流量中。打开 map View 后,出现成功的磁贴响应并且 map 已完全加载。看起来 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 ) 中修复。
关于ios - MKMapView 无法加载带有 HTTP 410 错误的图 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35226550/
我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-
我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende
我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou
我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳
我在理解Enumerator.new方法的工作原理时遇到了一些困难。假设文档中的示例:fib=Enumerator.newdo|y|a=b=1loopdoy[1,1,2,3,5,8,13,21,34,55]循环中断条件在哪里,它如何知道循环应该迭代多少次(因为它没有任何明确的中断条件并且看起来像无限循环)? 最佳答案 Enumerator使用Fibers在内部。您的示例等效于:require'fiber'fiber=Fiber.newdoa=b=1loopdoFiber.yieldaa,b=b,a+bendend10.times.m
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("