Javascript 谷歌地图v3-放大/缩小是否可以重复(和重新居中)?

Javascript 谷歌地图v3-放大/缩小是否可以重复(和重新居中)?,javascript,google-maps-api-3,dom-events,Javascript,Google Maps Api 3,Dom Events,我有一张谷歌地图,上面有多个多边形区域。我已经知道了如何通过单击多边形放大,然后使用“dblclick”侦听器缩小,并删除它们的侦听器 一旦你点击放大,然后双击缩小,我就不能再重复这个功能了。有没有办法放大和缩小多次 以下是我的代码: //POLYGON ZONE 1 ================================ var zone1; var triangleCoords = [ new google.maps.LatLng(29.738692,

我有一张谷歌地图,上面有多个多边形区域。我已经知道了如何通过单击多边形放大,然后使用“dblclick”侦听器缩小,并删除它们的侦听器

一旦你点击放大,然后双击缩小,我就不能再重复这个功能了。有没有办法放大和缩小多次

以下是我的代码:

     //POLYGON ZONE 1 ================================ 
  var zone1;

  var triangleCoords = [
    new google.maps.LatLng(29.738692, -95.399331),
    new google.maps.LatLng(29.738688, -95.394781),
    new google.maps.LatLng(29.737048, -95.394781),
    new google.maps.LatLng(29.737048, -95.399331)
  ];

  // Construct the polygon
  // Note that we don't specify an array or arrays, but instead just
  // a simple array of LatLngs in the paths property
  zone1 = new google.maps.Polygon({
    paths: triangleCoords,
    strokeColor: "#00AEEF",
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: "#00AEEF",
    fillOpacity: 0.05,
  });

  zone1.setMap(map);
  zone1._myBounds = new google.maps.LatLngBounds();
  for (var i=0; i<triangleCoords.length; i++)
  {
     zone1._myBounds.extend(triangleCoords[i]);
  }

  var listener = google.maps.event.addListener(zone1, 'click', function () {
      map.fitBounds(zone1._myBounds);
      google.maps.event.removeListener(listener); 
  });

    var listener2 = google.maps.event.addListener(zone1, 'dblclick', function() {
    if (map.getZoom() > 16) map.setZoom(13); 
    //map.setZoom(map.getZoom() -1);
    //map.setCenter(map.getCenter());
    google.maps.event.removeListener(listener2); 
    google.maps.event.addListener(zone1, 'click', function (){
        map.fitBounds(zone1._myBounds);});
  });
//多边形区域1=============================================================================================================================================================================================================================================================
变异区1;
var triangleCoords=[
新google.maps.LatLng(29.738692,-95.399331),
新google.maps.LatLng(29.738688,-95.394781),
新google.maps.LatLng(29.737048,-95.394781),
新google.maps.LatLng(29.737048,-95.399331)
];
//构造多边形
//请注意,我们没有指定一个或多个数组,而只是
//paths属性中的一个简单latlng数组
zone1=新建google.maps.Polygon({
路径:三角形门,
strokeColor:#00AEEF“,
笔划不透明度:0.8,
冲程重量:2,
fillColor:#00AEEF“,
不透明度:0.05,
});
第1区:设置地图(地图);
zone1._myBounds=新的google.maps.LatLngBounds();
对于(var i=0;i 16)map.setZoom(13);
//map.setZoom(map.getZoom()-1);
//map.setCenter(map.getCenter());
google.maps.event.removeListener(listener2);
google.maps.event.addListener(zone1,'click',函数(){
map.fitBounds(zone1._myBounds);});
});
对于我的其他多边形区域,我是否也必须更改变量名称才能使其工作


此外,返回中心似乎工作不正常。如果我需要在单独的问题中问这个问题,我会问。

直接的问题是,在dblclick上添加的单击侦听器中,您没有执行相同的操作:

google.maps.event.addListener(zone1, 'click', function (){
    map.fitBounds(zone1._myBounds);});
与原件相比:

var listener = google.maps.event.addListener(zone1, 'click', function () {
  map.fitBounds(zone1._myBounds);
  google.maps.event.removeListener(listener); 
});

如果要再次执行此操作,为什么要删除侦听器?因此,对polygon1使用此代码不会影响polygon2:<代码>google.maps.event.addListener(zone1,'click',函数(){map.fitBounds(zone1.\u myBounds);});google.maps.event.addListener(zone1,'dblclick',函数(){if(map.getZoom()>16)map.setZoom(13);})