Ios MKMapView中showsUserLocation的不稳定行为
我有一个Ios MKMapView中showsUserLocation的不稳定行为,ios,ios5,mkmapview,Ios,Ios5,Mkmapview,我有一个MKMapView和一个MKUserTrackingBarButtonItem。用户的当前位置只能在Follow或FollowWithHeading模式下显示。实现如下所示: - (void)mapView:(MKMapView *)mapView didChangeUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated { [mapView setShowsUserLocation:(
MKMapView
和一个MKUserTrackingBarButtonItem
。用户的当前位置只能在Follow
或FollowWithHeading
模式下显示。实现如下所示:
- (void)mapView:(MKMapView *)mapView
didChangeUserTrackingMode:(MKUserTrackingMode)mode
animated:(BOOL)animated
{
[mapView setShowsUserLocation:(mode != MKUserTrackingModeNone)];
}
这是我的代码中唯一调用setShowsUserLocation
的地方,当按下MKUserTrackingBarButtonItem
时,它会按预期工作
我的问题发生在通过拖动地图来更改UserTrackingMode
时:在这种情况下,“蓝点”注释会按预期消失,但在大约20%的情况下,当拖动结束时它会重新出现
如果我随后测试地图的showsUserLocation
属性,它总是设置为NO,即使“蓝点”注释可见
如果你知道如何解决这个问题,我将非常感谢你的帮助 看起来,如果用户位置更新在拖动过程中的某个时间出现,则即使
showsuserslocation
为NO
,委托方法仍会启动,蓝点也会重新出现
这似乎是地图视图的一个缺点
在didUpdateUserLocation
中切换showsUserLocation
似乎可以修复地图视图的内部状态,蓝点消失:
-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
if (!mapView.showsUserLocation)
{
mapView.showsUserLocation = YES;
mapView.showsUserLocation = NO;
}
}