每次更新时,MapBox didUpdateUserLocation都会调用两次

时间:2018-02-22 22:00:08

标签: ios objective-c mapbox

我们在最近的iOS 11项目中使用MapBox。在项目中,我们有一个导致大问题的现象。出于某种原因,对于每个位置更新,都会调用两次MapBox didUpdateUserLocation委托方法。

为了说明这个问题,我们添加了这个代码,它只是增加了一个类变量

#pragma mark -
#pragma mark MGLMapViewDelegate Methods

- (void)mapView:(MGLMapView *)mapView didUpdateUserLocation:(nullable 
MGLUserLocation *)userLocation
{
    NSLog(@"updatecounter = %i",updatecounter);
    updatecounter++;
}

生成以下示例输出:

2018-02-22 22:50:14.210199+0100 didUpdateUserLocation:] [Line 1830] updatecounter = 3
2018-02-22 22:50:14.210511+0100 didUpdateUserLocation:] [Line 1830] updatecounter = 3
2018-02-22 22:50:15.184880+0100 didUpdateUserLocation:] [Line 1830] updatecounter = 4
2018-02-22 22:50:15.187484+0100 didUpdateUserLocation:] [Line 1830] updatecounter = 4
2018-02-22 22:50:16.186877+0100 didUpdateUserLocation:] [Line 1830] updatecounter = 5
2018-02-22 22:50:16.189279+0100 didUpdateUserLocation:] [Line 1830] updatecounter = 5
....

如果我们删除了与viewController的委托连接,则调用将停止。任何人都可以想到可能导致MapBox每次更新两次调用委托的原因吗?

任何帮助将不胜感激

谢谢, 斯蒂芬

1 个答案:

答案 0 :(得分:0)

结果是错误地拥有多个地图视图,导致多个消息被发送给代理。有关如何调试的详细信息,请参阅this thread