0

私は GMaps API と JavaScript の初心者なので、これは本当に専門家であるあなたにとっては簡単な質問です。API をいじり始めて、簡単なことを試してみたかったのですが、できませんでした。答えを探しましたが、わかりませんでした。マップを作成しました:

<script type="text/javascript">
function initialize() {

    //CREATE THE MAP
    var mapOptions = {
      center: new google.maps.LatLng(-35.8190,-61.9010),
      zoom: 15,
      mapTypeId: google.maps.MapTypeId.SATELLITE
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"),
        mapOptions);

    //GET THE ZOOM
    var ez = map.getZoom();

    //TRYING TO CHANGE ZOOM FROM EXTERNAL LINK (DOESN'T WORK)
function cambiarZOOM(nro) {
    var newZ = ez + nro;
    map.setZoom(newZ);
    }

}
google.maps.event.addDomListener(window, 'load', initialize);

</script>

さて、HTML:

<html><body onload="initialize()">
<input type="button" onclick="cambiarZOOM(5)" value="CAMBIAR ZOOM">
</body></html>

さて、今私は google.maps.trigger(); について読んでいます。しかし、私はそれを取得していません。私はあなたの答えに感謝します!ありがとう!

4

3 に答える 3

0

あなたの問題は、cambiarZOOM関数とmap変数が初期化関数のスコープ内でのみアクセスできることです。onclick イベントで関数を使用するには、関数がグローバルに使用可能である必要があります (これはお勧めしません)、または関数がスコープ内にあるときに関数をボタンにアタッチする必要があります。

ボタンに id ( ) を指定すると、次のように初期化関数内にid='zoomButton'アタッチできます。cambiarZOOM

...
function cambiarZOOM(nro) {
    var newZ = ez + nro;
    map.setZoom(newZ);
    }
}

var button = document.getElementById('zoomButton');
button.onclick = function () { cambiarZOOM(5); };
于 2013-09-18T14:42:18.780 に答える
0

cambiarZOOM 関数は、initialize 関数に対してローカルです (その関数に含まれています)。HTML イベント ハンドラー ("onclick" など) で使用するには、グローバル スコープ (関数宣言の外) にある必要があります。「マップ」変数も、その中で使用するにはグローバルである必要があります。

<script type="text/javascript">
var map = null;
function initialize() {

    //CREATE THE MAP
    var mapOptions = {
      center: new google.maps.LatLng(-35.8190,-61.9010),
      zoom: 15,
      mapTypeId: google.maps.MapTypeId.SATELLITE
    };
    map = new google.maps.Map(document.getElementById("map_canvas"),
        mapOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);

function cambiarZOOM(nro) {
    //GET THE ZOOM
    var ez = map.getZoom();
    var newZ = ez + nro;
    map.setZoom(newZ);
    }

</script>
于 2013-09-18T14:40:52.893 に答える
0

mapはローカル変数ですinitialise()- 他の関数はそれにアクセスできないため、 の外で宣言しinitialise()ます。次に、マップの現在のズームを返す新しい関数を用意します。

var map;

function initialize() {
  var mapOptions = {
    center: new google.maps.LatLng(-35.8190,-61.9010),
    zoom: 15,
    mapTypeId: google.maps.MapTypeId.SATELLITE
  };
  map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
}

function getCurentZoom() {
  return map.getZoom();
}

function cambiarZOOM(nro) {
  var newZ = getCurentZoom() + nro;
  map.setZoom(newZ);
}    

google.maps.event.addDomListener(window, 'load', initialize);
于 2013-09-18T14:41:34.953 に答える