我对地图和代表有疑问。我正在做一本书的练习,它告诉我要使用该方法

- (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];
}


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

问题是:如果我在汽车上并想滚动地图,这将成为一项艰巨的任务,因为在我更改位置时始终会调用此方法。

还有其他方法吗,或者我可以选择激活和停用代理?

提前致谢。

最佳答案

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

- (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;


您不必为此加倍努力。

关于ios - MKMapKit iOS5。我可以在需要时设置所需的委托(delegate)吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11336599/

10-11 19:49