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 函数是初始化函数的本地函数(它包含在该函数中)。它需要在全局范围内(在任何函数声明之外)才能在 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 回答
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 回答