我有一个地图视图,它设置为放大用户的当前位置。问题是,如果用户在查看地图时更改位置,则会缩放回当前位置。这使得我无法将功能用于我计划的工作。我将在地图上有多个引脚,但如果位置发生变化,用户将无法查看所有引脚。即使我的设备坐在我的桌子上,位置也会略有变化,因此地图会不断地将用户从他们正在查看的地图的任何部分带回到当前位置的缩放视图。有没有人对此有任何想法?
- (void)foundLocation:(CLLocation *)loc
{
CLLocationCoordinate2D coord = [loc coordinate];
// Zoom the region to this location
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(coord, 250, 250);
[worldView setRegion:region animated:YES];
[activityIndicator stopAnimating];
[locationManager stopUpdatingLocation];
}
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
CLLocationCoordinate2D loc = [userLocation coordinate];
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 250, 250);
[worldView setRegion:region animated:YES];
}
答案 0 :(得分:2)
问题在于以下几点:
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 250, 250);
[worldView setRegion:region animated:YES];
即你,使用缩放因子250,250
将视图缩放回用户的位置。因此,如果您不希望在用户移动视图后缩小视图,请不要这样做!
答案 1 :(得分:0)
我们可以第一次停止接收当前位置,
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
CLLocationCoordinate2D loc = [userLocation coordinate];
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 250, 250);
[worldView setRegion:region animated:YES];
[locationManager stopUpdatingLocation];
locationManager.delegate = nil;
}