我正在使用地图套件并使用“showsUserLocation”显示用户的位置 我使用以下代码缩放到用户的位置,但没有缩放。它缩放到非洲的某个位置,尽管地图上的用户位置显示正确。
MKCoordinateRegion newRegion;
MKUserLocation* usrLocation = mapView.userLocation;
newRegion.center.latitude = usrLocation.location.coordinate.latitude;
newRegion.center.longitude = usrLocation.location.coordinate.longitude;
newRegion.span.latitudeDelta = 20.0;
newRegion.span.longitudeDelta = 28.0;
[self.mapView setRegion:newRegion animated:YES];
为什么用户的位置正确显示而不是正确缩放。有人可以纠正我吗?
答案 0 :(得分:26)
第一次实例化时,mapView.userLocation设置为非洲海岸(0,0)附近的位置。因此,我执行以下操作,这会导致在注释出现时进行缩放。当然,这只是一个例子:
- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views {
for(MKAnnotationView *annotationView in views) {
if(annotationView.annotation == mv.userLocation) {
MKCoordinateRegion region;
MKCoordinateSpan span;
span.latitudeDelta=0.1;
span.longitudeDelta=0.1;
CLLocationCoordinate2D location=mv.userLocation.coordinate;
region.span=span;
region.center=location;
[mv setRegion:region animated:TRUE];
[mv regionThatFits:region];
}
}
}
答案 1 :(得分:3)
你可以尝试:
mapView.userTrackingMode=YES;
mapView.userTrackingMode=NO;
UserTrackingMode将缩放到用户位置。
答案 2 :(得分:1)
您是否确认mapView.userLocation
返回的位置不是0,0?