使用MapKit跟踪模式

时间:2014-05-07 13:53:48

标签: ios mapkit

我对UserLocation和MapKit有疑问。

我会关注地图上的用户位置(如果用户位置发生变化,则会自动移动地图)如果用户点击(或平移或捏合)地图,我将禁用“跟随模式”#39; (像Apple地图应用程序).​​.

我试过这个方法:

[_mapView setUserTrackingMode:MKUserTrackingModeFollowWithHeading animated:YES];

这项工作做得很好,但我对此有一些疑问:

  • 可以在“关注模式”中设置特定的缩放级别'?

  • 我注意到,如果他们处于关注模式'我捏了一下地图,按照模式'模式不会中断。如果我仍然捏地图(或平移)'按照模式'被打断了。当你真的停止这种模式时,我不明白。

3 个答案:

答案 0 :(得分:1)

您可以在其委托方法中将地图的区域或中心设置为用户位置:

区:

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

中心:

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation {
    [self.mapView setCenterCoordinate:userLocation.location.coordinate animated:YES];
}

来源:https://stackoverflow.com/a/19518422/3601482

答案 1 :(得分:0)

我想我知道你的意思,你可以试试MKMapViewDelegate

func mapView(_mapView:MKMapView,didChangemode:MKUserTrackingMode,animated: Bool) {
    mapView.setUserTrackingMode(.followWithHeading, animated: true)
}

滚动或缩放mapView时,MKUserTrackingMode会发生变化, 所以你可以重置它。

答案 2 :(得分:0)

我想你想重置跟踪模式回到自动关注:

[_mapView setUserTrackingMode:MKUserTrackingModeFollowWithHeading animated:YES];

问题是何时重置。我建议

  • 添加按钮(如Apple Maps的导航箭头按钮),以便用户决定何时返回自动跟踪
  • 或制作一个不活动时重置的计时器