Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS地图视图问题/问题_Ios_Annotations_Android Mapview_Core Location - Fatal编程技术网

iOS地图视图问题/问题

iOS地图视图问题/问题,ios,annotations,android-mapview,core-location,Ios,Annotations,Android Mapview,Core Location,我有一个为iOS开发的应用程序,该应用程序执行以下操作 加载和设置注释,启动corelocation并缩放到位置 地图上有很多注释,从数据加载不需要很长时间,但将它们实际渲染到地图上需要一段时间。。因此,用户界面有点停顿,然后最终获得corelocation并缩放到它 虽然这是功能性的,但并不是理想的用户体验。。我可以颠倒顺序,先进行corelocation缩放,然后调用AddAnnotations,但这也会导致UI暂停,因为注释是在UI线程中添加的,更不用说corelocation也可能需要一

我有一个为iOS开发的应用程序,该应用程序执行以下操作

加载和设置注释,启动corelocation并缩放到位置

地图上有很多注释,从数据加载不需要很长时间,但将它们实际渲染到地图上需要一段时间。。因此,用户界面有点停顿,然后最终获得corelocation并缩放到它

虽然这是功能性的,但并不是理想的用户体验。。我可以颠倒顺序,先进行corelocation缩放,然后调用AddAnnotations,但这也会导致UI暂停,因为注释是在UI线程中添加的,更不用说corelocation也可能需要一点时间才能首先获取其位置

所以,我想我要问的问题是,处理这个问题的最好方法是什么?是否有某种我不知道的方式可以在不占用UI的情况下将注释呈现到地图上?我可以在地图上显示一些闪屏,但这似乎是一种逃避,我个人讨厌闪屏

也许最好的方法是在地图上显示忙碌/正在工作的微调器,直到其完成


一般认为最佳做法是什么

我认为你最好的解决办法就是不要在地图上添加“很多”注释。MKMapView有很多工作要做,它不需要大量的注释就可以让它停滞不前。有许多创造性的方法可以减少注释的数量

如果你有很多注释被紧密地组合在一起,考虑把它们聚合成一个单独的注释,然后当用户达到令人满意的接近缩放级别时,这些注释被分成单独的注释。 另一个需要考虑的问题是,默认用户使用更严格的缩放级别,并且只添加当前屏幕上该缩放级别和位置的注释


这两个选项中的任何一个听起来是可行的,还是让您考虑另一种创造性的方法来帮助您解决问题?

您可以使用OCMapView对所有注释进行聚类。如前所述,地图可以处理大量注释,但性能会随着绘制视图的数量而下降,而MKannotationViews不会产生任何影响。 OCmapView对所有注释进行聚类,并将它们合并显示在单个annotationView中。试试看,它是免费的。

我最终只做了与android版本相同的事情,虽然iphone处理大量注释的能力远比droid好,但惰性加载方法对这两种平台来说肯定是更好的总体体验


谢谢大家的帮助。

谢谢你的建议,保罗,虽然你建议的解决方案可行,但还不够理想。我确实为这个应用的Android版本使用了一个延迟加载解决方案,它确实可以运行,但它也会给用户体验增加暂停和其他问题,如果可能的话,我希望避免这些问题。。Android MapView速度太慢,甚至无法考虑加载所有注释。因此,每次滚动或移动都会有一个小的延迟,因为它加载了标记,这是合理的,我可以使用这种方法,但在iPhone上加载的时间并不长,可以处理所有的注释,只是可以提前注意到,这在整个应用程序的使用过程中提供了更流畅的用户体验。IPhone在处理大量注释方面做得更好,但在处理注释时仍然有明显的停顿。将它们添加到地图中的代码实际上运行得很快,但是UI中显示它们的响应非常明显。不是难以忍受,而是引人注目。我将尝试活动指示器的方法,看看它是如何工作的。请理解,添加活动指示器,虽然可能会为用户提供一些上下文,但在主线程上旋转动画时也会结巴(当前导致暂停的是同一个)。