gpt4 book ai didi

ios - 使用 MKUserTrackingBarButtonItem 时如何指定缩放级别?

转载 作者:IT王子 更新时间:2023-10-29 08:20:39 39 4
gpt4 key购买 nike

我正在使用 MKUserTrackingBarButtonItem 按钮来允许用户自动跟踪他们在 map 上的位置。问题是当他们点击这个按钮时,它被放大得太远了。我希望它以指定的缩放级别(即跨度)开始。我怎样才能做到这一点?

当用户点击按钮更改为 MKUserTrackingModeFollow 时,它似乎使用与用户上次手动更改为相同的缩放级别(即在 map 上使用手势)。尝试通过 setRegionsetVisibleMapRect 指定不同的缩放级别不会影响模式更改为 MKUserTrackingModeFollow 时将使用的缩放级别。

尝试覆盖 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];
}
}

如果我尝试在设置区域后立即重置模式,则在用户静止时效果很好,但在用户移动时会缩小。

最简单的解决方案是,如果有一种方法可以通过向 MKUserTraking 发送我的跨度值来简单地指定诸如缩放级别之类的东西。但是,既然那似乎不存在,我还能做什么呢?

最佳答案

我遇到了同样的问题,但使用了不同的方法来解决它。您可以为此使用 MapCamera 函数而不是那个按钮。

在每个新位置执行此操作:

 MKMapCamera *newCamera = [MKMapCamera cameraLookingAtCenterCoordinate:[newLocation coordinate]
fromEyeCoordinate:[oldLocation coordinate]
eyeAltitude:2000];

[mapView setCamera:newCamera animated:TRUE];

并玩转 eyeAltitude。

如果用户手动放大或缩小,您可以从 mapview.camera.altitude 读取高度值,当用户手动使用 map 时也不要更新相机。

关于ios - 使用 MKUserTrackingBarButtonItem 时如何指定缩放级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23192956/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com