0
我從來沒有與MKMapView或CoreLocation工作過,所以我需要一些幫助。 我想獲得我現在的位置(也許在mapView中顯示此位置)並定期更新我的位置,並每次比較我的新舊位置以查看我是否已移動。比較GPS位置
是這樣的可能嗎?我怎樣才能做到這一點?我已經實現了一個MKMapView。但我不知道我怎樣才能得到我目前的位置,並作出比較,看看我是否正在移動...
感謝您的任何幫助!
我從來沒有與MKMapView或CoreLocation工作過,所以我需要一些幫助。 我想獲得我現在的位置(也許在mapView中顯示此位置)並定期更新我的位置,並每次比較我的新舊位置以查看我是否已移動。比較GPS位置
是這樣的可能嗎?我怎樣才能做到這一點?我已經實現了一個MKMapView。但我不知道我怎樣才能得到我目前的位置,並作出比較,看看我是否正在移動...
感謝您的任何幫助!
這很簡單。將showsUserLocation
設置爲YES
即可完成。 docs
爲了使它更好一點,你可以居中每次位置變化MKMapView
。請參閱here如何操作。
如果你想知道你是否搬家了,你應該將最近的位置存儲在一個屬性中,然後在委託方法mapView:didUpdateUserLocation:
中檢查新位置是否與上一個位置不同。
@property (assign, nonatomic) CLLocationCoordinate2D locationCoordinate;
...
@synthesize locationCoordinate = _locationCoordinate;
- (void)viewDidLoad
{
[super viewDidLoad];
self.mapView.delegate = self;
}
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
if (userLocation.coordinate.latitude != self.locationCoordinate.latitude ||
userLocation.coordinate.longitude != self.locationCoordinate.longitude) {
// We moved
}
self.locationCoordinate = userLocation.coordinate;
}
實際上,我不知道,如果當userLocation
已經改變了委託方法只調用。在這種情況下,您不必將該位置存儲爲屬性並執行檢查,只需實施委託方法並在那裏執行您的操作。
聽起來很不錯!謝謝,我現在會試一試。但是,是否也可以容忍一點偏差?例如100米或類似的東西?因爲我無法想象gps系統的工作總是足夠準確...... – Daniel05
啊......但我認爲經緯度是浮動的值,不是嗎?也許是這樣的比較可能? if((userLocation.coordinate.latitude - self.locationCoordinate)> = 12 &&(userLocation.coordinate.latitude - self.locationCoordinate)<= 12)) – Daniel05
如果您記得使用經度和緯度self.locationCoordinate的屬性。儘管如此,12似乎是一個巨大的價值。記住你正在比較地理位置而不是長度。如果您絕對需要以米爲單位比較距離,則可以實施Haversine公式:http://en.wikipedia.org/wiki/Haversine_formula –