作者uranusjr (←这人是超级笨蛋)
看板MacDev
标题Re: [问题] MKMapView + 飞航模式 + WiFi的Bug?
时间Wed Jun 19 23:36:57 2013
※ 引述《Piceman (派斯面)》之铭言:
1F:推 kiii210:按照文内的意思来讲的话,连上Wifi要定位也不是每次都可以 06/19 19:43
2F:→ kiii210:要看这个Wifi的路由有没有在Apple的清单内 06/19 19:43
3F:→ kiii210:在的话就会连上skyhook来定位 不在的话就不会.. 06/19 19:44
4F:→ kiii210:但是还是很奇怪啊,我在同个Wifi底下,开我的app不能定位 06/19 19:44
5F:→ kiii210:开内建地图或是Google Map就定得到位...这是怎麽回事 06/19 19:45
6F:→ kiii210:不过用CLLocationManager倒是可以解决问题啦.. 06/19 19:45
7F:→ kiii210:只是我好想知道到底为什麽哪里出了问题...@@ 06/19 19:45
8F:→ kiii210:WeChat InstaWeather Siri facebook都可以... 06/19 19:47
9F:→ Piceman:为什麽..你不是用 CLLocation 找位置?你是用什麽找的? 06/19 20:52
10F:推 kiii210:先用showsUserLocation定到位置,之後处理都是用CLLocatio 06/19 20:56
11F:→ kiii210:这样没错呀~~两个方法我记得都可以..@@ 06/19 20:56
以下凭印象
CLLocationManager 有一个 cache 会记录你上一次的位置
这个 cache 是 system-wide value, 也就是只要你在任何时刻定过位
所有的 CLLocationManager 在要求位置时就会获得一个 cached location
另一方面, MKMapView 的 user location 虽然也是基於 Core Location 实作
但是它并没有保证经过 CLLocationManager
所以并不保证可以同样获得 cache 里面的定位记录
你可以先试试看在你的程式里面用 CLLocationManager 试试看是不是能要到位置
要到之後可以看一下那个 CLLocation object 的 timestamp
如果以上解释无误的话, 你应该会发现这个位置并不是最新的, 只是 cache
这也是为什麽其他 apps 看起来好像神奇的获得了你的位置
--
"问おう、贵方が私のマスターか?"
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.81.146
※ 编辑: uranusjr 来自: 114.32.81.146 (06/19 23:38)
12F:推 kiii210:谢u大回答,在stackoverflow问也有人说是cache 06/20 00:04
13F:→ kiii210:今天要休息了,明天再试试看 06/20 00:05
14F:→ kiii210:不过我从公司回家之後,开飞航,开Wifi,开定位, 06/20 00:05
15F:→ kiii210:然後再开其他地图软体,也是马上就定位到我家的位置.. 06/20 00:05
16F:→ kiii210:那这个cache..从哪来..又为何只有我的app没有cache? 06/20 00:06