当用户移动地图时,停止MKMapView跟随用户当前位置移动。

5
我正在制作一个应用程序,用于显示用户当前位置附近的一些地点。当用户移动地图时,地图会不断将用户移回当前位置。因此,用户无法看到地图上的注释,因为如果他移动地图,地图会回到他的当前位置。
以下是我目前正在做的事情:
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
if (userLocation)
{
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 1000, 1000);
    MKCoordinateRegion regionDelMapa = [self.mapa regionThatFits:region];
    if(isnan(regionDelMapa.center.latitude))
    {
        NSLog(@"Bad region...");
    }else
    {
        [self.mapa setRegion:regionDelMapa animated:YES];
    }
}   
}

我尝试了其他答案,但都不起作用。这不是期望的行为,所以我该如何停止更新用户的当前位置?

2个回答

3
[self.mapa setRegion:regionDelMapa animated:YES];

那行代码设置了地图的区域。每次更新时都执行该代码,因此重置了地图覆盖的区域。如果你不想让地图在每次更新时重新以用户位置为中心,就从 -mapView:didUpdateUserLocation: 方法中删除该代码。

如果你想要将地图居中于用户位置一次,然后允许用户滚动到其他位置,可以使用 Core Location 获取用户的位置。


1
请在您的函数 didUpdateUserLocation 中添加以下代码:[locationManager stopUpdatingLocation]; 这是一个API。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接