如何在用户可视范围内高效地显示Google地图上的物品?

3
当用户移动谷歌地图时,我希望自动显示用户可见范围内的项目。如何高效快速地展示这些项目?我了解每次用户移动地图时调用getBounds()方法的基本原理,但我不确定如何高效地搜索并从我的数据库中获取当前视窗边界内的项目的纬度/经度。有更简单、更快速的方法吗?
2个回答

1

我曾经遇到过同样的问题。我尝试缓解这个问题的方法如下:

  • 将经纬度存储为小数并保存在数据库中
  • 在经度和纬度列上创建索引
  • 使用类似于 SELECT * FROM table WHERE long > $long_left AND long < $long_right AND lat > $lat_bottom AND lat < $lat_top 的查询语句

如果您预计会有大量标记,请使用 MarkerManager 来处理标记,因为您可以设置标记仅在特定缩放级别下显示。

将经纬度存储为小数可以让数据库正确比较值,而不必在比较之前转换值。

索引是数据库的关键(哈哈,双关语),请正确使用它们,但不要过度使用。


1

空间索引功能似乎很有趣,您知道使用此类型的索引可以提高多少性能吗? - Cory
@Cory:这取决于您在地图上有多少个项目。如果您只有一百个左右的点,那么我认为这不会太重要。您仍然可以像Geek在其他答案中建议的那样,在纬度和经度字段上使用索引,以减少查找时间并避免完整的表扫描。另一方面,如果您将拥有成千上万或数百万个点,或者如果您还将显示轨迹、线条和多边形,则空间索引可能会变得很方便。 - Daniel Vassallo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接