0

我有一个页面,它每 x 秒自动重新加载一次

<meta http-equiv="refresh" content="60"/>

标签。页面上有一个谷歌地图,我需要记住刷新之间的缩放级别(和中心)。

这就是我所拥有的:

function initialize() {

    // initialize the map
    var latlng = new google.maps.LatLng(0, 0);
    var myOptions = {
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    myMarkers = new Array();    
    updateMarkers();


    cen = new google.maps.LatLng(-12.461334, 130.841904);
    map.setCenter(cen);
    zoomLevel = document.getElementById("zoomLevel").value;
    map.setZoom(parseInt(zoomLevel));
    google.maps.event.addListener(map, 'zoom_changed', function() {
        str = map.getZoom() + '';
        document.getElementById("zoomLevel").value = str;
    });
  }

因此,我有一个事件侦听器,它将在每次缩放更改后更新隐藏值 zoomLevel。在每次重新加载缩放级别时,应从该值中读取。

<input type="hidden" name="zoomLevel" id="zoomLevel" value="4" />

但是每次刷新后,缩放级别都设置为 4。我做错了什么?

谢谢。

4

3 回答 3

1

元刷新不是回发,而是页面的实际干净请求。您有两种方法可以解决此问题:

  1. 首先停止刷新,这是您想出的一个可怕的解决方案。使用 ajax 请求新地图并覆盖旧地图。
  2. 更糟糕的是,但保持了你奇怪的风格:使用setTimeout而不是调用form.submit(或者__doPostBack如果你使用的是 asp.net,则建立链接)。这样您就可以发出实际的发布请求。
于 2010-12-15T12:59:37.903 回答
0

我相信解决方案就在您的指尖。事实上,您根本不需要回发。只需安排每 60 秒调用一次 initialize() 函数。所以 -

  1. 移除自动刷新 META 标签;
  2. 添加一行类似: setInterval(initialize, 60000); 在页面启动代码中

你在这。

于 2010-12-15T14:08:44.973 回答
0

也许您可以使用 cookie 来记住页面的状态。

于 2010-12-15T19:48:44.430 回答