0

下面的代码是我一直用来放大用户位置的方法,但是一旦用户移动地图,它就会停止不断地重新缩放到它。这种方法的问题是,当它在应用程序中请求用户位置数据的权限时,我选择是,它什么也不做。我必须离开页面并在它正确缩放之前返回。

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    if ([self.mapView showsUserLocation])
    {
        MKCoordinateRegion region;
        region.center = self.mapView.userLocation.coordinate;

        MKCoordinateSpan span;
        span.latitudeDelta  = .50; // Change these values to change the zoom
        span.longitudeDelta = .50;
        region.span = span;

        [self.mapView setRegion:region animated:YES];

        self.mapView.showsUserLocation = NO;}
}

上面的方法应该是监控用户位置的变化,一旦找到就设置位置。然后,我在 if 语句中设置了一个条件以使其停止 -否则当您移动地图时它会继续移动回用户位置。

4

1 回答 1

1

在我看来,它self.mapView.showsUserLocation设置为FALSE弹出窗口出现的时间,因为它还不知道用户的位置。为了解决这个问题,我建议只使用您自己的变量。在这个类中创建一个全局布尔值并使用它来代替 self.mapView.showsUserLocation。此外,请确保该函数实际上是在用户同意弹出窗口后调用的。你有 NSLogging 吗?

于 2013-02-21T01:49:08.377 回答