如何动态地添加指向谷歌地图时的界限变化?(How do I dynamically add poin

2019-10-17 03:57发布

我目前可以放置在地图窗口中静点:

var latlng = new GLatLng(lat, lng);
map.addOverlay(new GMarker(latlng, markerOptions));

我知道如何让窗口的范围。 我也可以编写一个页面,将采取边界和返回是在他们里面的任何格式的点。

现在的问题,我有:

  1. 是否moveend事件捕捉所有动作,包括变焦变化? 或者我需要单独观看该事件?
  2. 我应该怎么称呼我的外部数据源? (我应该只是做一个jQuery $.get的要求吗?)
  3. 我应该是数据源返回?
  4. 如何在地图上显示的数据?

Answer 1:

我用这个在我的网站之一。 我认为这是你在寻找什么。 但是要注意“gmaps型多功能库”插件具有一定的越野车/坏的代码,所以这是一个好主意,走了过来,并仔细检查,如果一切正常,因为它应该(我还没有遇到过的标记管理器,但在某些任何错误从库中的其他插件)。

下面是引用和实例 。

即使你想你自己的代码这个可能是一个很好的起点。

编辑

我对3-4的答案:

这要看情况。 如果它是静态的(你只需要在地图上的> 300管理一分不少),那么你可以用其中地图位于页面为所有分在一起(如JavaScript数组为例)。 如果用户与数据进行交互那么很可能它是更好地使用AJAX。 如果您在您的网站上使用jQuery(或任何其他JS库),然后使用AJAX功能,从库中如果没有则与来自gmaps一去。 这是因为它是很好的使用AJAX相同功能的整个网站,而不是使用2,做同样的工作。

如果你正在服用AJAX路径,你有2种选择:

  1. 加载整个地图的所有标记在一个请求。
  2. 负载标记,显示了用户屏幕+小幅度上。

如果您预计用户希望看到大图片或者说,他希望看到所有/大部分点,然后去选择1个+标记管理器(像我推荐的一个或您自己的类似)。

如果确实没有一分不少,并且用户将不会有兴趣在大部分,然后去选择2 +经理或只是这个简单的算法:清除地图 - >在地图窗口边界+ magin /(缓存)请点 - >画点 - >重复每个移动/缩放。

从个人的经验(我用两个AJAX选项)标记管理做得比较好的工作,可以处理大量的点和整体的用户体验是平滑了很多,然后加载点只是视。 请求新的点,画他们在地图上是相当laggy /波涛汹涌。 当然,这取决于点的数量。



Answer 2:

这里是在进行外部呼叫从谷歌数据源的一个很好的例子: 谷歌地图PHP和SQL

如果你存储的只是一个外部JavaScript文件中的点,那么我会建议使用JSON格式通过XML为谷歌地图采用的是比JSON慢很多XML解析器。

  1. Moveend是捕捉任何类型的变化。
  2. 如果您只使用一个外部XML文件,那么你可以使用谷歌的功能调用和下载的XML文件(在上面的链接看到),否则我会创建一个可以更新的文件,并使用JSON解析。
  3. 我相信它应该返回JSON作为我发现它比XML解析快得多。
  4. 您将通过阵列分析,并创建一个标记与每个这些。 下面是使用JSON的一个很好的例子:

jQuery和谷歌地图

祝好运!



Answer 3:

我目前做的非常类似的措施,与服务器集群上沿。

  1. 是的, moveend将捕获变焦的变化。
  2. 如果您已经使用jQuery,一个$.get请求将工作的伟大。
  3. 我曾试图返回XML和JSON。 这些工作得很好,但我发现,通过对这些数据的格式解析导致应用程序获取显著更慢更点被添加到数据库中。 现在我回到我执行与eval()函数普通的JavaScript。 我没有这个问题,因为我完全信任的JavaScript(我)的来源。
  4. JavaScript函数增加了一个标记仅包含经度,纬度,和标记的ID。 该页面已包含Javascript数组与所有每个标记的数据,它可以被点击标记时,访问的。

这就是我正在做,但你肯定会accompish您想用许多方法来做些什么。



文章来源: How do I dynamically add points to a Google Map when the bounds change?