本帖最后由 Sian 于 2015-6-7 20:29 编辑
1、在使用百度地图时,定位失败一般会报两种错:
Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)"
Error Domain=kCLErrorDomain Code=1 "The operation couldn’t be completed. (kCLErrorDomain error 1.)"
即我们所说的Code=0和Code=1,网上有很多帖子都说这是模拟器没有GPS硬件造成的xxxxxx,然而我们是真机呀,真机!!!
2、一提到是真机就没人BB了,就连百度地图开发者论坛都没人能正面回答这个问题,有些人可能模拟器的问题还没解决,那就先说模拟器吧!
3、关于模拟器我总结一下,比较中肯的说法是,Code=0说明没有位置信息,即没获取到GPS信息,因为没人提供GPS数据给模拟器,两种方式解决:
3.1、上两个图就明白了,说多人也是废话
直接给模拟器经纬度数据
Xcode传输一个模拟的经纬度给模拟器,都可以,这个不多说,这样设置就行了,还有什么不明白的参考:http://yusian.com/thread-8226-1-1.html
4、Code=1说明是系统授权问题,尤其是iOS8再麻烦,这个问题我曾经详细阐述过了,请移驾参考这个:http://yusian.com/thread-8822-1-1.html
5、终于要说到真机出现Code=0或Code=1的问题了,一般出现这个问题是定位的结果进了代理的// 定位失败 - (void)didFailToLocateUserWithError:(NSError *)error
出现定位失败的时候,我在户外,GPS信号应该OK的,而且满格4G信号,网络应该不比WiFi差,即当前基站+GPS定位,应该已经非常精准了,然后iPhone却想都不想一下,直接弹个定位失败给我,感觉他都连试都没试一下就说定位失败,这叫人如何信服?! 插一句,我们在使用百度地图时不知道有没有注意一个细节,有时候百度地图会弹一个消息告诉你,打开WiFi会提高定位的精确度!这句话非常有讲究,相信看了上面那个贴子你应该知道,WiFi环境下定位是最快的,并且GPS返回的误差是最底的,暂且不管实际误差是不是最底的,至少返回的信息系统告诉你误差在1米范围内,就连在地图上代表误差范围的那个半透明圈圈都没有的。一开始我以为百度的这句提示是想告诉你,使用WiFi定位吧,这样速度快精度又高,其实我想骂人,我在荒山野岭的户外,哪来的WiFi啊?!你这建议有何价值?!
直到今天我才明白,重点来了,直到今天我才明白,这样的提醒不是要你连接WiFi,他的意图在于希望你打开WiFi开关,只要打开WiFi开关就行,鉴于iOS的严谨性及出于保护用户隐私的考虑,程序是无法直接打开WiFi的,就连当前WiFi是开还是关都没办判断出来,所以我说这句话很有讲究,他不确定你有没有开WiFi,如果确定你没开,他会直接说要你打开WiFi,就是不确定才中庸地讲,打开WiFi会提高定位的精确度,这有点像一句废话,但实则在提醒用户,如果可以,你要不要看一下你的WiFi有没有打开亲,如果没有打开,那就打开吧,没有WiFi不连WiFi也没关系。然而他没法跟用户解决清楚,为什么只要打开这个开关就行,哪怕不连?!
所以,反正我什么都没说,你是用户你老大,你看着办吧,如果打开WiFi说不定就可以了,如果打开WiFi还不行,那就没办法了,我也没说打开WiFi一定就可以,这就是这句话的精妙之处!
不想看这么多文字的注意看最后一句话就行:真机定位失败Code=0,把你的WiFi开关打开,甭管连不连WiFi,打开再说试一下又不会怀孕,说不定就可以了呢!!!反正我是可以了! |