繁体   English   中英

iOS6 iPhone应用程序—如何仅放大一次到userLocation?

[英]iOS6 iPhone App — How to zoom to userLocation only once?

以下代码是我一直用于放大用户位置的方法,但是一旦用户移动地图,它便会停止将其连续重新缩放至该位置。 这种方法的问题在于,当它向应用程序中的用户位置数据请求权限时,如果我选择“是”,它不会执行任何操作。 我必须离开页面并返回,然后才能正确缩放。

-(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语句中设置一个条件以使其停止- 否则,当您四处移动地图时,它会不断移回到用户位置。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM