在下面的基本示例代码中,我使用以下代码来捕获zoom_changed事件:
google.maps.event.addListener(map, 'zoom_changed', function() {
console.log(map.getZoom());
});
如果我调用map.setZoom(30),我会将其调入控制台:
> map.setZoom(30)
> 30
> 21
也就是说,zoom_changed被激发两次,一次使用不正确的值。它导致我在图书馆的一些问题,我不知道为什么会发生这种情况。但是,我无法使用v3 api在其他一些项目中重现该问题。
奇怪的是,如果我在控制台中另外指定了zoom_changed侦听器而不是将其初始化,我得到的值:21,21。所以答案就在那里。
代码是:
<!DOCTYPE html>
<html>
<head>
<title>Simple Map</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<style>
html, body, #map-canvas {
height: 100%;
margin: 0px;
padding: 0px
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
var map;
function initialize() {
var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(-34.397, 150.644)
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
google.maps.event.addListener(map, 'zoom_changed', function() {
console.log(map.getZoom());
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map-canvas"></div>
</body>
</html>