我正在开发一款 iPhone 应用程序,其中涉及在 Google 地图中填充英国各地的许多位置点。
有超过 10,000 个点,当用户滚动时,每个点都会根据纬度/经度位置固定在地图上,每次用户更改缩放量时,都必须重新加载页面上的图钉。
您可以想象每次移动地图时尝试在 iPhone 屏幕上加载 10,000 个图钉,这会花费时间加载并使应用程序无法使用。
以下屏幕截图显示了应用程序的填充情况: http://www.wreckfinder.co.uk/wp-content/uploads/2012/06/photo-8.png
我无法决定以更干净和友好的方式显示数据的好方法。
潜在的解决方案:
该网站对地图区域进行分组,并解释一个区域内有多少个图钉,然后一旦放大到足够大,它就会在地图上填充可供查看的点。
显示最大引脚数 我的另一个想法是在任何时刻最多只显示 500 个引脚。因此,一旦用户放大到少于 500 个图钉的级别,它就会显示它们。但有一个问题,我无法找到一种方法来知道 iPhone 上随时显示有多少个图钉,看来你只能控制图钉数据库,你无法知道用户正在查看哪个缩放级别/位置在地图上。
将数据库分成几个部分 例如,将屏幕分成 9 个框 - 3x3,并将数据库分成每个框约 1000 个引脚,然后当用户单击某个区域时,他们只会显示该区域中的这些引脚,然后必须返回才能查看任何其他引脚。
从上面我理想地想使用 1. 或 2. 2.看起来最简单,
如果您能帮助解释如何实现 2. 或有其他可能的简单解决方案以更好地显示这些引脚,我将不胜感激!
将您的引脚分组为 1 个引脚。在不同的缩放级别上取消它们的分组,例如在英国的缩放级别上,您将拥有例如 50 个图钉(例如对于区域)。放大某个区域,将取消其引脚与其子引脚的分组。这是最好的方法。
正如 Oleg Danu 所说,您可以对图钉进行分组。这是一篇谈论它的文章。还有一些库作为示例,以及我们在案例中使用的算法(请注意,该算法实现起来并不简单):
这是我在应用程序中为解决类似问题所做的操作:基本上,不要自动绘制引脚;让用户提出要求。
最酷的一点是我会建立在图钉数据库的基础上,因此当用户在地图上移动,然后询问更多位置时,我只需添加到屏幕上已有的内容即可。
摇动以重置引脚。 =)
放大和缩小时,您可以更改英里半径(1、5、10、50),但关键是通过限制图钉数量来释放地图滚动的空间。祝你好运!
编辑:我没有足够的代表来评论 Oleg/Zoleas 方法,但如果你必须显示所有 10,000 点,那么对引脚进行分组绝对是可行的方法。但作为一名用户体验设计师,我会问,对于用户来说,找到靠近当前位置的位置与需要查看所有可能的位置是否更重要。
过去,我为此使用了Marker clusterer lib,你可以在以下位置找到它: