谷歌地图阿贾克斯新标记


Google Maps Ajax New Markers

我有一个谷歌api3地图。在空闲时,我计算地图可见区域的半径,执行 ajax 请求并从 xml 文档中检索可见区域中的所有标记。

然后我解析 xml,清除当前地图标记并用新标记替换它们。

这有效,但有两个警告。 1)重新加载时,所有标记都会闪烁。2)这导致我下载并重新加载标记,即使用户没有将地图移动到足够远的位置以使其离开屏幕。换句话说,我正在重新加载屏幕上已有的标记。

仅提取地图可见区域中尚未显示在屏幕上的标记的最佳方法是什么?

我追求性能,因为我有大量的标记。

测试 URL:http://whosopennow.com/maintenance/test.php#(平移到华盛顿特区)

假设地图边界不包括国际日期变更线或地图换行(您可能需要将最小缩放比例设置为 4 左右),我将使用 map.getBounds() 执行以下步骤(未经测试):

  1. 始终存储现有的可见边界。我称之为lastViewable.
  2. 当检测到可见边界已更改时,执行 Ajax 调用。
  3. 对于 XML 中的每个标记,如果它位于 lastViewable 之外,请将其添加到屏幕中。这些是新的标记。
  4. 现在,假设地图被拖动了。现在在可视区域之外的标记需要移除。
  5. lastViewable设置为当前边界
  6. 删除这些lastViewable范围之外的所有标记。