在Google Maps API v3中切换平移和标记移动锁定

时间:2010-12-14 22:25:25

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

我拥有和界面,用户可以管理其业务的多个位置,添加其他位置并删除不再需要的位置。

在我的界面中,我会显示每个地点的列表,每个地点都有自己的地图。

我的问题是如何锁定地图以防止用户平移或移动标记,直到他们点击“编辑位置”按钮为止?

是否有任何类型的toggleMapLock函数?

到目前为止,我有以下两种方法。锁();方法工作正常,但解锁();方法由于某种原因不起作用。

lock: function() {
  this.map.disableDoubleClickZoom = true;
  this.map.draggable = false;
  this.map.keyboardShortcuts = false;
  this.map.navigationControl = false;
  this.map.scaleControl = false;
  this.map.scrollwheel = false;
  this.map.streetViewControl = false;
  this.marker.draggable = false;
},

unlock: function() {
  this.map.disableDoubleClickZoom = false;
  this.map.draggable = true;
  this.map.keyboardShortcuts = true;
  this.map.navigationControl = true;
  this.map.scaleControl = true;
  this.map.scrollwheel = true;
  this.map.streetViewControl = true;
  this.marker.draggable = true;
  console.log("unlock");  
},

1 个答案:

答案 0 :(得分:4)

disableDoubleClickZoom(以及列出的其他属性)不是Map类的公共属性 - 它们是MapOptions类的属性。要更改其值,您需要类似以下内容:

lock: function() {
  this.map.setOptions({
    disableDoubleClickZoom: true,
    draggable: false
  });
},

unlock: function() {
  this.map.setOptions({
    disableDoubleClickZoom: false,
    draggable: true
  });
}

这将创建一个MapOptions对象(在{}内)并将其传递给SetOptions,后者根据传入的值更新Map的当前状态。