javascript - 如何重新启用禁用的谷歌地图 v3 拖放、缩放等

标签 javascript google-maps google-maps-api-3

打开信息窗口后,我设置:

map.setOptions({draggable: false, zoomControl: false, scrollwheel: false, disableDoubleClickZoom: true});

这使得用户无法再与 map 交互,但是当用户单击信息窗口上的“关闭”时...我如何将其设置回默认值?

最佳答案

观察信息窗口的map_changed事件,每次打开或关闭信息窗口时都会触发该事件(无论如何触发)。

根据信息窗口的 map 属性设置值(关闭时为 null,否则为 map 实例)

function initialize() {
  var map = new google.maps.Map(document.getElementById('map_canvas'), {
      zoom: 14,
      center: new google.maps.LatLng(52.549878, 13.425209),
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }),
    marker = new google.maps.Marker({
      map: map,
      position: map.getCenter()
    }),
    win = new google.maps.InfoWindow({
      content: 'hello world'
    });

  google.maps.event.addListener(win, 'map_changed', function() {
    
    //will be true when infowindow is open
    var boo = !!this.getMap();
    
    map.setOptions({
      draggable: !boo,
      disableDefaultUI: boo,
      scrollwheel: !boo,
      disableDoubleClickZoom: boo
    });
  });

  google.maps.event.addListener(marker, 'click', function() {
    win.open(map, this);
  });
}

google.maps.event.addDomListener(window, 'load', initialize);
html,
body,
#map_canvas {
  height: 100%;
  margin: 0;
  padding: 0
}
<script src="https://maps.googleapis.com/maps/api/js?v=3&.js"></script>
<div id="map_canvas"></div>

关于javascript - 如何重新启用禁用的谷歌地图 v3 拖放、缩放等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28907559/

相关文章:

google-maps - 聚类 Google map 标记(api v3)时,对象没有方法 'getPosition'

javascript - GMaps v3 : How to cancel mouse scroll events before they scroll map

javascript - 检测 Google map 街景模式

javascript - 当一个元素有多个类时,如何在 switch 语句中检查 className

javascript - 在 div 中垂直滚动多个背景图像以及文本

android - 如何使用google api获取 "Bus Service No"

android - 谷歌地图驾驶模式 url 方案不适用于 Android

javascript - 尝试用 JavaScript、JQuery 制作确认框……不起作用

javascript - 存储桶之间所有项目的分布

javascript - 谷歌分析 : No HTTP Response Detected