MKAnnotation不可见*直到*用户拖动地图

时间:2014-06-23 19:29:39

标签: ios mkmapview mkannotation

我正在构建一个应用程序,其中注释标记用户所感兴趣的兴趣点。地图会跟踪用户的位置并滚动,但在用户用手指拖动地图之前,地图上应该会显示的注释不会显示。

添加和删除注释工作正常,所以我不确定要显示的代码。

有没有人见过类似的行为?

修改

这只会影响一些注释 - 有些注释会出现,有些则不会。没有明显的模式。

正如所建议的,我已经更改了代码,因此我只在主线程上添加和删除注释:

dispatch_async(dispatch_get_main_queue(), ^{
    [self.mapView removeAnnotations:annotationsToRemove];
    [self.mapView addAnnotations:annotationsToAdd];
});

但问题仍然存在。织补...

3 个答案:

答案 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}}有关检查可见地图矩形的注释的更多信息。