gpt4 book ai didi

ios - MKMapView 中 showsUserLocation 的不稳定行为

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:54:18 25 4
gpt4 key购买 nike

我有一个带有 MKUserTrackingBarButtonItemMKMapView。用户的当前位置应仅在 FollowFollowWithHeading 模式下显示。实现看起来像这样:

- (void)mapView:(MKMapView *)mapView 
didChangeUserTrackingMode:(MKUserTrackingMode)mode
animated:(BOOL)animated
{
[mapView setShowsUserLocation:(mode != MKUserTrackingModeNone)];
}

这是我的代码中唯一调用 setShowsUserLocation 的地方,当按下 MKUserTrackingBarButtonItem 时它按预期工作。

当通过拖动 map 更改 UserTrackingMode 时,我的问题出现了:在这种情况下,“蓝点”注释按预期消失,但在大约 20% 的情况下,它会在拖动结束时重新出现.

如果我随后测试 map 的 showsUserLocation 属性,它始终设置为 NO,即使“蓝点”注释可见。

如果您知道如何解决这个问题,我将不胜感激。

最佳答案

看起来如果在拖动过程中的某个时间出现用户位置更新,didUpdateUserLocation 委托(delegate)方法仍然会触发并且即使 showsUserLocation 也会重新出现蓝点是 NO

这似乎是 map View 的一个缺点。

didUpdateUserLocation 中切换 showsUserLocation 似乎修复了 map View 的内部状态并且蓝点消失了:

-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
if (!mapView.showsUserLocation)
{
mapView.showsUserLocation = YES;
mapView.showsUserLocation = NO;
}
}

关于ios - MKMapView 中 showsUserLocation 的不稳定行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8555903/

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