2014-12-08 5 views
-1

У меня есть небольшая проблема. Я просто хочу показать текущее местоположение пользователя в центре карты. А mapview масштабирует область, которая может показывать аннотацию и местоположение пользователя одновременно. Функция showAnnotation mapview, похоже, помогает, в то время как местоположение пользователя не находится в центре карты.iOS MapView показывает текущее местоположение и аннотацию в visibleRect

+0

Площадь, занятая вид карты является _region_. Настройка региона зависит от вас. Вы можете указать точку, которую хотите в центре, и вы можете указать регион. Поэтому покажите местоположение пользователя как центр, но укажите область, достаточно большую для включения аннотации. – matt

+1

См. Http://stackoverflow.com/questions/26416587/fitting-annotations-on-a-mkmapview-while-keeping-user-position-centered – Anna

ответ

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 будет иметь карту следующим образом местоположение пользователя

Смежные вопросы