0

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

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

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

仅在地图的可见区域中拉出标记并且尚未出现在屏幕上的最佳方法是什么?

我要去表演,因为我有大量的标记。

测试网址:http ://whosopennow.com/maintenance/test.php# (泛到华盛顿特区)

4

1 回答 1

1

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

  1. 始终存储现有的可见边界。我会打电话lastViewable的。
  2. 当检测到可见边界已更改时,执行 Ajax 调用。
  3. 对于 XML 中的每个标记,如果它在 outside lastViewable,则将其添加到屏幕上。这些是新的标记。
  4. 现在,假设地图被拖动了。现在需要移除可视区域之外的标记。
  5. 设置lastViewable为当前边界
  6. 删除这些lastViewable界限之外的所有标记。
于 2012-05-16T22:42:08.207 回答