kCLErrorDomain Code=0终极解决方案!

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、上两个图就明白了,说多人也是废话

屏幕快照-2015-06-05-下午11.42.12

直接给模拟器经纬度数据

屏幕快照-2015-06-05-下午11.46.49

4、Code=1说明是系统授权问题,尤其是iOS8再麻烦,这个问题我曾经详细阐述过了。

5、终于要说到真机出现Code=0或Code=1的问题了,一般出现这个问题是定位的结果进了代理的

// 定位失败
– (void)didFailToLocateUserWithError:(NSError *)error
这个方法,同样的道理,Code=1是授权问题,和模拟器一样,看上面那个帖子《v2.5.0适配ios8,解决定位问题(亲测可用!!)》,非常详细了,设置几个参数即可解决,或者在这个失败方法里面再申请一下系统授权不就行了,实在是被用户拒绝了,再弹个提醒,用户会可怜你的!

如果是Code=0,即没有获取到位置信息,这个就麻烦了,绕了好大一个弯,终于到这里了,定位一共分三种,基站、GPS、WiFi,这三者有什么区别呢?………不多说了,有兴趣参考一下《为什么手机GPS定位系统建议要开WiFi?

出现定位失败的时候,我在户外,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,打开再说试一下又不会怀孕,说不定就可以了呢!!!反正我是可以了!

Leave a Reply