2010-10-15 3 views
1

В закрытом помещении на с iPhone 4. WiFi отключеннымПроверить возраст пользователя в Mapkit - Точность GPS для местоположения пользователя MapKit значительно лучше, чем от CLLocationManager?

Запуск образца LocateMe SDK или мой собственный код на 30-60 секунд производит горизонтальную точность 2294 метров. Довольно неточно, но разумно для триангуляции ячеек. Глядя на другие приложения, которые делают обратное геокодирование или местоположение, такие как Foursquare, показывают аналогичную недочету.

Однако, если я переключусь на другое представление в своем приложении, которое использует Mapkit, и проверьте/отобразите местоположение пользователя, на котором оно находится. Я имею в виду уровень дома на карте, который я бы связал с местоположением уровня WiFi или сильным GPS-чтением.

Итак, я понял, что Mapkit, вероятно, полагается на чтение в кэше, которое было получено, когда WiFi был включен на моем устройстве. Я отключил службы определения местоположения в настройках. Перезагруженное приложение «Карта» перенесло карту от моего текущего местоположения. Выйти из службы повторного включения. Откройте приложение «Карта» снова - бинго справа назад с сильным местоположением.

Насколько я знаю, служба определения местоположения является одноуровневым уровнем системы, что означает, что одни и те же данные совместно используются с MapKit, как и с моим экземпляром CLLocationManager. Единственное, что я могу придумать, - это расположение кэшируется более широко на MapKit, и отключить службы определения местоположения не очищает его кеш даже при запуске map.app.

Кому-нибудь известно о способе проверки возраста местоположения пользователя в MapKit? Я хотел бы исследовать дальше, и даже если это недокументированный вызов или свойство, с которым я не могу отправить, я действительно хотел бы использовать его для отладки, чтобы понять, что происходит.

Благодаря

ответ

3

Вы можете получить доступ к временной метке местоположения пользователя, используемый MKMapView следующим образом:

[[[mapView userLocation] location] timestamp]; 

Отметка является NSDate и он говорит вам, когда это место было определено.