1

現在の位置を取得し、MKMapView でこの座標にアニメーション化したいと考えています。現在の場所を取得しましたが、MKMapView でこの場所にアニメーション化していません。青い点で現在の場所にアニメーション化するにはどうすればよいですか?

- (void)viewDidLoad
{
    [super viewDidLoad];

    locationManager = [[CLLocationManager alloc] init];

    self.mapView.delegate = self;
    [self.mapView setShowsUserLocation:YES];

    locationManager.delegate=self;
    locationManager.desiredAccuracy=kCLLocationAccuracyBest;
    locationManager.distanceFilter=kCLDistanceFilterNone;

    [locationManager startUpdatingLocation];
}

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation
{

    location = [locationManager location];

    CLLocationCoordinate2D coord;
    coord.longitude = location.coordinate.longitude;
    coord.latitude = location.coordinate.latitude;
    lat = coord.latitude;
    longt = coord.longitude;

    [self.mapView setCenterCoordinate:coord animated:TRUE];
}

- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views

{
    MKAnnotationView *annotationView = [views objectAtIndex:0];
    id<MKAnnotation> mp = [annotationView annotation];
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([mp coordinate] ,250,250);
    [mv setRegion:region animated:YES];
}
4

2 に答える 2

1
self.mapView.userTrackingMode = MKUserTrackingModeFollow

これは、実装したいもののように見える青い点でユーザーの場所に従います

于 2013-03-22T08:41:55.897 に答える
0

MKMapView の userLocation.location プロパティの KVO 通知に登録する必要があります。

これを行うには、このコードを ViewController の viewDidLoad: またはマップ ビューが初期化される場所の任意の場所に配置します。

[self.mapView.userLocation addObserver:self forKeyPath:@"location"  
           options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld)   context:NULL];

次に、このメソッドを実装して KVO 通知を受け取ります

- (void)observeValueForKeyPath:(NSString *)keyPath  ofObject:(id)object  change:(NSDictionary *)change  context:(void *)context
 {  

    if ([self.mapView showsUserLocation])
    {  
        [self moveOrZoomOrAnythingElse];
    }
}
于 2013-03-25T04:51:53.937 に答える