【问题标题】:MKMapView Cannot Set Center By LocationMKMapView 无法按位置设置中心
【发布时间】:2013-03-22 08:11:23
【问题描述】:

我想在 MKMapView 上获取当前位置并动画到这个坐标。我得到了当前位置,但我没有在 MKMapView 上对这个位置进行动画处理。如何用蓝点动画到当前位置?

- (void)viewDidLoad
{
    [super viewDidLoad];

    locationManager = [[CLLocationManager alloc] init];

    self.mapView.delegate = self;
    [self.mapView setShowsUserLocation:YES];

    locationManager.delegate=self;
    locationManager.desiredAccuracy=kCLLocationAccuracyBest;
    locationManager.distanceFilter=kCLDistanceFilterNone;

    [locationManager startUpdatingLocation];
}

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation
{

    location = [locationManager location];

    CLLocationCoordinate2D coord;
    coord.longitude = location.coordinate.longitude;
    coord.latitude = location.coordinate.latitude;
    lat = coord.latitude;
    longt = coord.longitude;

    [self.mapView setCenterCoordinate:coord animated:TRUE];
}

- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views

{
    MKAnnotationView *annotationView = [views objectAtIndex:0];
    id<MKAnnotation> mp = [annotationView annotation];
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([mp coordinate] ,250,250);
    [mv setRegion:region animated:YES];
}

【问题讨论】:

  • 你想根据用户当前的位置来设置地图视图中心.M i 对吗?
  • 是的,我想根据用户当前位置设置地图视图中心

标签: iphone ios mkmapview cllocationmanager mkannotation


【解决方案1】:
self.mapView.userTrackingMode = MKUserTrackingModeFollow

这将用一个蓝点跟随用户的位置,这似乎是你想要实现的

【讨论】:

  • 什么也没发生。地图无法缩放到当前位置。
  • 是否调用了您的位置委托方法?你是在设备上还是模拟器上运行?
  • 如果你在 didUpdateLocation 方法中放置了一个断点,它会被命中吗?
【解决方案2】:

您必须注册 MKMapView 的 userLocation.location 属性的 KVO 通知。

为此,请将此代码放入 ViewController 的 viewDidLoad: 中或初始化地图视图的任何位置。

[self.mapView.userLocation addObserver:self forKeyPath:@"location"  
           options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld)   context:NULL];

然后实现这个方法来接收KVO通知

- (void)observeValueForKeyPath:(NSString *)keyPath  ofObject:(id)object  change:(NSDictionary *)change  context:(void *)context
 {  

    if ([self.mapView showsUserLocation])
    {  
        [self moveOrZoomOrAnythingElse];
    }
}

【讨论】:

  • 它不起作用。地图仍然无法移动或缩放到用户的位置。
猜你喜欢
  • 1970-01-01
  • 2013-01-30
  • 2011-09-04
  • 1970-01-01
  • 2014-08-21
  • 2020-09-03
  • 2014-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多