1

我正在开发一个 iphone 应用程序,该应用程序涉及用英国各地的许多位置点填充谷歌地图。

有超过 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. 或有其他可能的简单解决方案来更好地显示这些引脚,我将不胜感激!

谢谢,肖恩。

4

4 回答 4

4

将您的引脚分组为 1 个引脚。并且在不同的缩放级别上取消组合它们,例如在英国的缩放级别上,您将拥有例如 50 个引脚(例如区域)。放大到一个区域,将取消其引脚与其子引脚的组合。这是最好的方法。

于 2012-06-15T15:00:43.927 回答
0

正如 Oleg Danu 所说,您可以对您的引脚进行分组。这是一篇谈论它的文章。还有一些库作为示例,以及我们在案例中使用的算法(请注意,该算法实现起来并不简单):

http://applidium.com/en/news/too_many_pins_on_your_map/

于 2012-06-15T15:13:47.957 回答
0

过去,我为此使用过 Marker clusterer lib,您可以在以下位置找到它:

http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.1.2/examples/simple_example.html

于 2014-08-31T13:46:46.633 回答
0

这是我在我的应用程序中为解决类似问题所做的:基本上,不要自动绘制图钉;让用户要求他们。

  1. 用点或目标图标标记地图的中心。
  2. 在地图中心的底部“查找 10 英里内的所有位置”添加一个按钮
  3. 点击按钮会遍历您的数据库(最好是在后台线程中);如果在中心 10 英里范围内,请放置一个图钉(希望您的数据库可以按纬度/经度排序,这样您就不必遍历所有 10,000 个)

很酷的额外功能是我会建立在那个图钉数据库上,所以当用户在地图上移动,然后询问更多位置时,我只需添加到屏幕上已有的内容。

摇动以重置引脚。=)

放大和缩小时,您可以更改英里半径(1、5、10、50),但关键是通过限制图钉数量来释放地图滚动。祝你好运!

编辑:我没有足够的代表来评论 Oleg/Zoleas 的方法,但如果你必须展示所有 10,000 分,那么分组别针绝对是要走的路。但作为一名 UX 设计师,我会问,对于用户来说,找到靠近他当前位置的位置是否比需要查看所有可能的位置更重要。

于 2012-06-15T15:07:04.787 回答