我的iPhone应用程序出现以下问题:
我定期启用位置管理器,我会等待多个位置更新。收到新位置后,我会检查新位置的时间戳属性,以确定它是否是旧位置:
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
numberOfUpdatesInInterval++;
NSLog(@"%d;%f;%f;%.0f;%@;%@;%@",
numberOfUpdatesInInterval,
newLocation.coordinate.latitude,
newLocation.coordinate.longitude,
newLocation.horizontalAccuracy,
newLocation.timestamp,
[self getCurrentDateAsString],
newLocation);
}
我现在遇到的问题是我收到了新的位置,其中时间戳是新的,但坐标仍然是我之前收到的旧位置。当我以120km / h的速度驾驶我的汽车时,我测试了这个,多次接收相同的坐标但是时间戳不同。 iOS 4中我遇到了同样的问题。 5。
这怎么可能?或者我该如何处理这个问题?
答案 0 :(得分:1)
iPhone可以通过几种方式获得它的位置。
最快的位置查找是单元信号位置。只要你最近有数据,大多数本地塔都将被缓存。电池塔精度可在500米至1500米或更高范围内。
第二快,如果你有数据连接或最近在该区域是wifi查找。这将提供非常准确的位置。需要注意的是,你必须在wifi周围并拥有良好的数据信号。
最慢的是GPS。 iPhone中的GPS是a GPS。它使用来自手机信号塔位置的数据来更好地修复您的位置。如果手机没有数据连接并且不在wifi附近,则需要2到4分钟才能获得修复。使用手机信息塔信息可能需要30秒。
来自apple docs:
在请求高精度位置数据时,位置服务提供的初始事件可能没有您请求的准确性。定位服务尽快提供初始事件。然后,它会继续以您请求的准确度确定位置,并在数据可用时根据需要提供其他事件。
在车内,你不太可能在wifi附近,并且可能需要等待更长时间才能锁定GPS。如果locationManager认为您仍然在前一个位置的范围内,则可能会导致旧的坐标具有不同的时间戳。
检查数据的水平准确度以及时间戳,以确定该位置是否与您请求的一样准确。
答案 1 :(得分:0)
Cllocation manager默认情况下将位置更新为
locationManager.distanceFilter = kCLDistanceFilterNone;
这就是你获得重复坐标的原因。实际上,即使海拔高度发生变化,它也会经常更新细节。
你最好设置
locationManager.distanceFilter = 4.0f;
//只有当您从当前位置每隔4米移动一次时,才会发送新的位置更新详细信息。