0

私はこれまでMKMapViewまたはCoreLocationを使用したことがないので、助けが必要です。現在の位置を取得し(おそらくこの位置をmapViewに表示します)、定期的に位置を更新し、毎回新しい位置と古い位置を比較して、移動したかどうかを確認したいと思います。

このようなことは可能ですか?これどうやってするの?私はすでにMKMapViewを実装しています。しかし、どうすれば現在の位置を取得し、移動しているかどうかを比較することができるかわかりません...

助けてくれてありがとう!

4

1 に答える 1

1

これは非常に簡単です。に設定showsUserLocationするYESと完了です。ドキュメント

少し良くするためにMKMapView、位置が変わるたびに中央に配置することができます。ここでそれを行う方法を参照してください。

移動したかどうかを知りたい場合は、最新の位置をプロパティに保存してから、デリゲートメソッド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が変更されたときにのみデリゲートメソッドが呼び出されるかどうかは、実際にはわかりません。その場合、場所をプロパティとして保存してチェックを行う必要はありません。デリゲートメソッドを実装して、そこで作業を行うだけです。

于 2012-05-07T12:28:22.253 に答える