2010-06-16 103 views
11

我正在使用地圖工具包,並使用「showsUserLocation」顯示用戶位置 我使用以下代碼縮放到用戶的位置,但沒有縮放,但放大到非洲的某個位置在地圖上的用戶位置顯示正確。iphone zoomto mapkit上的用戶位置

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]; 

爲什麼用戶的位置才能正常顯示,而不是縮放正常。有人可以糾正我嗎?

回答

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

您是否已經驗證通過mapView.userLocation返回的位置不是在0,0?

+0

如果用戶位置爲零,則不會顯示與我的位置完全匹配的註釋引腳。 – Satyam 2010-06-17 02:44:48

+0

@satyam:按照你所描述的經緯度三角洲,你可以將非洲納入變焦範圍,因爲0,0不是那麼遙遠。此外,你沒有告訴用戶位置在哪裏。 – 2010-06-17 07:21:56

3

你可以試試:

mapView.userTrackingMode=YES; 
mapView.userTrackingMode=NO; 

UserTrackingMode將放大用戶的位置。

+0

這將轉到當前位置,但不會優雅地縮放。 – 2013-04-14 00:15:35

+0

在iOs 8.3中,它放大優雅。 – 2015-06-22 00:59:53