0

我有一个关于地图和委托的问题。我正在做一本书的练习,它告诉我要使用该方法

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    //CLLocationCoordinate2D loc = [userLocation coordinate];
    self.coord2D = [userLocation coordinate];

    //MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 250, 250);
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(self.coord2D, 250, 250);

    [worldView setRegion:region animated:YES];
}

这意味着每次我将手机从我所在的位置移开时,它都会在屏幕上显示我自己。我还创建了一个调用此方法的按钮。因此,如果我滚动我的地图,我可以看到我在哪里。

问题是:如果我在车里并且想要滚动我的地图,这将成为一项艰巨的任务,因为这个方法会在我改变我的位置时一直被调用。

是否有任何其他方法,或者我是否可以选择激活和停用委托?

提前致谢。

4

1 回答 1

1

据我所知,这很简单。只需一个按钮即可激活和停用它。

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    //CLLocationCoordinate2D loc = [userLocation coordinate];
    self.coord2D = [userLocation coordinate];

    if (self.trackUserLocation) {
        //MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 250, 250);
        MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(self.coord2D, 250, 250);

        [worldView setRegion:region animated:YES];
    }
}

物业:

@property (nonatomic, assign) BOOL trackUserLocation;

按钮动作:

self.trackUserLocation = !self.trackUserLocation;

你不必让它比这更难。

于 2012-07-05T00:46:09.850 回答