我有一个MapView并标记了用户位置的位置,附近还有其他有关旅游景点的各种类型的注释视图。我希望MapView可以滚动和缩放以查看城市的所有注释视图,但是当我移动时,MapView会立即返回中心拍摄,看起来很难看。
这是MapViewController.m中的代码
- (void)viewDidLoad{
//.....
self.mapView.zoomEnabled=YES;
self.mapView.scrollEnabled = YES;
//......
}
- (void) locationManager:(CLLocationManager *) manager
didUpdateToLocation:(CLLocation *) newLocation
fromLocation:(CLLocation *) oldLocation {
//......
self.coordinate = CLLocationCoordinate2DMake(self.latitudine, self.longitudine);
CLLocationCoordinate2D min = CLLocationCoordinate2DMake(self.coordinate.latitude -0.005,
self.coordinate.longitude-0.005);
CLLocationCoordinate2D max = CLLocationCoordinate2DMake(self.coordinate.latitude+0.005,
self.coordinate.longitude+0.005);
CLLocationCoordinate2D center = CLLocationCoordinate2DMake((max.latitude + min.latitude)
/ 2.0, (max.longitude + min.longitude) / 2.0);
MKCoordinateSpan span = MKCoordinateSpanMake(max.latitude - min.latitude, max.longitude -
min.longitude);
MKCoordinateRegion region = MKCoordinateRegionMake(center, span);
self.mapView.region= region;
[mapView setRegion:region animated:TRUE];
//......
}
答案 0 :(得分:2)
我认为这是因为不断调用更新,所以它会一直使用mapview setregion位将屏幕居中。
当您宣布您的locationManager时,请务必设置灵敏度。
self.locationManager.distanceFilter = 10.0f;
如果更新超过10米,则只会调用更新。
答案 1 :(得分:0)
每当设备注意到它已改变位置时,您将地图缩放为self.latitudine和self.longitudine。在您显示的代码中,您没有将这些值设置为任何新值。你的意思是放大newLocation
坐标吗?