2014-12-08 85 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将在地图跟随用户的位置

相关问题