Sen*_*ful 16 objective-c mapkit ios apple-maps
我正在使用一个MKUserTrackingBarButtonItem按钮,允许用户自动跟踪他们在地图上的位置.问题是,当他们点击此按钮时,它会被缩放得太远.我希望它以指定的缩放级别(即跨度)开始.我怎样才能做到这一点?
当用户点击按钮进行更改时MKUserTrackingModeFollow,它似乎使用用户上次手动更改的相同缩放级别(即在地图上使用手势).尝试通过setRegion或setVisibleMapRect不影响更改模式时将使用的缩放级别来指定不同的缩放级别MKUserTrackingModeFollow.
尝试override mapView:didChangeUserTrackingMode:设置区域会导致模式更改回MKUserTrackingModeNone.例:
- (void)mapView:(MKMapView *)mapView didChangeUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated {
if (mode == MKUserTrackingModeFollow) {
CLLocationCoordinate2D center = mapView.userLocation.location.coordinate;
MKCoordinateSpan span = MKCoordinateSpanMake(0.002306, 0.001717);
[mapView setRegion:MKCoordinateRegionMake(center, span) animated:YES];
// [mapView setUserTrackingMode:MKUserTrackingModeFollow animated:NO];
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在设置区域后立即尝试重置模式,则在用户静止时可以正常工作,但如果用户正在移动则缩小.
最简单的解决方案是,如果有一种方法可以通过发送我的跨度值来简单地为MKUserTraking指定类似缩放级别的内容.但是,由于这似乎不存在,我还能做什么?
我有同样的问题,并使用不同的方法来解决它.您可以使用MapCamera函数代替该按钮.
在每个新位置执行此操作:
MKMapCamera *newCamera = [MKMapCamera cameraLookingAtCenterCoordinate:[newLocation coordinate]
fromEyeCoordinate:[oldLocation coordinate]
eyeAltitude:2000];
[mapView setCamera:newCamera animated:TRUE];
Run Code Online (Sandbox Code Playgroud)
并且用眼睛玩耍.
如果用户手动放大或缩小,您可以从mapview.camera.altitude读取高度值,当用户手动使用地图时也不要更新相机.
| 归档时间: |
|
| 查看次数: |
1236 次 |
| 最近记录: |