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

メタリフレッシュはポストバックではなく、ページの実際のクリーンリクエストです。これを修正する方法は2つあります。

  1. そもそもリフレッシュをやめなさい、それはあなたが思いついた恐ろしい解決策です。ajaxを使用して新しいマップをリクエストし、古いマップを元の場所に上書きします。
  2. さらに悪いですが、奇妙なスタイルを維持しています。setTimeout代わりに使用して呼び出しますform.submit(または、__doPostBackasp.netを使用している場合はリンクを作成します)。このようにして、実際のP​​OSTリクエストを作成します。
于 2010-12-15T12:59:37.903 に答える
0

私は解決策があなたの指先にあると信じています。実際、ポストバックする必要はまったくありません。initialize()関数が60秒ごとに呼び出されるようにスケジュールするだけです。それで -

  1. 自動更新METAタグを削除します。
  2. 次のような行を追加します:setInterval(initialize、60000); ページのスタートアップコード

あります。

于 2010-12-15T14:08:44.973 に答える
0

たぶん、あなたはあなたのページの状態を覚えるためにクッキーを使うことができます。

于 2010-12-15T19:48:44.430 に答える