2014-12-08 79 views
-1

我有一點問題。 我只想在地圖視圖的中心顯示當前用戶位置。並且mapview縮放到可以同時顯示註釋和用戶位置的區域。 mapview的showAnnotation func似乎有所幫助,而用戶位置不在mapview的中心。iOS MapView在visibleRect中顯示當前位置和註釋

+0

通過地圖視圖覆蓋的區域是_region_。設置該地區取決於你。你可以在中心指定你想要的點,然後你可以指定區域。因此,將用戶位置顯示爲中心,但指定足夠大的區域以包含註釋。 – matt 2014-12-08 02:48:48

+1

請參閱http://stackoverflow.com/questions/26416587/fitting-annotations-on-a-mkmapview-while-keeping-user-position-centered – Anna 2014-12-08 02:55:37

回答

0
  var userLoc = self.mapView.userLocation 

      let newDistance = CLLocation(latitude: userLoc.coordinate.latitude, longitude: userLoc.coordinate.longitude).distanceFromLocation(CLLocation(latitude: annotation.latitude, longitude: annotation.longitude)) 
      let region = MKCoordinateRegionMakeWithDistance(userLoc.coordinate,2 * newDistance, 2 * newDistance) 
      let adjustRegion = self.mapView.regionThatFits(region) 
      self.mapView.setRegion(adjustRegion, animated:true) 

上面的代碼解決了我的問題。我只是忘記乘以2的距離。 ...

-1
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation 
{ 
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 800, 800); 
    [self.mapView setRegion:[self.mapView regionThatFits:region] animated:YES]; 
} 

上述代碼行指示地圖視圖可以放大用戶位置周圍800米乘800米的區域。

0

您可以使用:

_mapView.userTrackingMode = MKUserTrackingModeFollow 

MKUserTrackingMode將在地圖跟隨用戶的位置

相關問題