我正在构建一个应用程序,其中注释标记用户所感兴趣的兴趣点。地图会跟踪用户的位置并滚动,但在用户用手指拖动地图之前,地图上应该会显示的注释不会显示。
添加和删除注释工作正常,所以我不确定要显示的代码。
有没有人见过类似的行为?
修改
这只会影响一些注释 - 有些注释会出现,有些则不会。没有明显的模式。
正如所建议的,我已经更改了代码,因此我只在主线程上添加和删除注释:
dispatch_async(dispatch_get_main_queue(), ^{
[self.mapView removeAnnotations:annotationsToRemove];
[self.mapView addAnnotations:annotationsToAdd];
});
但问题仍然存在。织补...
答案 0 :(得分:2)
当您添加注释时,会在该注释上调用以下所有方法以供其显示。
[_mapView addAnnotation:theAnnotation];
[_mapView deselectAnnotation:theAnnotation animated:NO];
[_mapView selectAnnotation:theAnnotation animated:NO];
对于我曾经使用的一些应用程序,除非您取消选择并选择注释,否则它不会在地图上显示(即使您只是添加它)。希望这有帮助!
答案 1 :(得分:2)
对我来说,我只需要在主线程上调用addAnnotations:
dispatch_async(dispatch_get_main_queue(), ^{
[self.mapView addAnnotations:annotations];
});
效果很好
答案 2 :(得分:1)
如果没有看到任何代码,很难说。话虽如此,如果您还没有,请尝试检查是否有任何注释位于mapView中的当前可见地图区域:didUpdateUserLocation,如果是,则刷新地图视图(请参阅{{的答案) 3}}有关检查可见地图矩形的注释的更多信息。