请记住Google Maps v3的状态

时间:2011-02-18 10:21:19

标签: google-maps gis kml

我正在显示带有地标和KML叠加层的地图。当用户点击时,我希望在用户返回时记住地图的状态。

第一个问题是:我可以以某种方式保存地图的整个状态;叠加和一切?

目前,我一直在保存lat / long和zoom,然后重放任何KML叠加层,但是它甚至没有取得任何成功。我在更改的边界或窗口卸载事件上保存了cookie,但问题是加载保存的值。原因是地图异步加载。我已尝试使用map idle事件,但它不止一次触发。似乎要触发,在处理程序中运行我的代码,然后在完成代码时再次触发。无限循环?无论如何,KML叠加层的重放完全覆盖了指定的纬度/长度/缩放。

所以主要的问题是:如何使用所有叠加层恢复已保存的地图?

1 个答案:

答案 0 :(得分:2)

我认为Google地图无法保存地图的状态,您必须自己动手。

您正确使用了空闲事件来初始化叠加层。每次地图在缩放或平移后变为空闲时都会触发空闲事件,因此如果您想要一次性监听空闲事件(或任何其他事件),您可以这样做:

var map = new google.maps.Map(document.getElementById("map"), myOptions); 
var initListener = google.maps.event.addListener(map, 'idle', function() {
    // do your code here
    google.maps.event.removeListener(initListener);
});

如果你想在加载kml后保留地图的缩放和中心,你必须使用KmlLayer的选项preserveViewport:

var kmlLayer = new google.maps.KmlLayer( myKml.kml, {preserveViewport: true});