我正在开发一个使用 iOS 6 MKMap 视图的应用程序,我想启用“用户位置按钮”(当您使用地图应用程序时,您会在屏幕左下方看到该按钮)。我没有找到任何可以帮助我的东西,所以我尝试用这段代码自己制作这个按钮:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
CLLocationCoordinate2D currentCoordinates;
currentCoordinates.latitude = newLocation.coordinate.latitude;
currentCoordinates.longitude = newLocation.coordinate.longitude;
MKCoordinateRegion viewRegion = MKCoordinateRegionMake(currentCoordinates, _mapView.region.span);
[_mapView setRegion:viewRegion animated:YES];
[locationManager stopUpdatingLocation];
}
- (IBAction)moveToCurrentLocation:(id)sender {
[locationManager startUpdatingLocation];
}
因此,当我按下按钮时,locationManager 会更新用户的当前位置,并且地图会使用以用户当前位置为中心且具有相同跨度的新区域来更改其区域。现在我遇到了另一个问题:当我按下按钮时,地图会移动到正确的坐标,但它也会缩小(换句话说,跨度会增加),即使我用旧跨度创建了一个新区域。我无法理解这种行为,我想像地图应用程序一样保留旧的跨度。