Google maps 您可以禁用事件侦听器而不删除它吗?

Google maps 您可以禁用事件侦听器而不删除它吗?,google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,由于GoogleMapsAPIv3不支持多边形或多段线的开始或结束编辑,我正在尝试构建自己的一个 我正在为每个点绘制标记,然后为了完成编辑,我将所有标记设置为在单击第一个索引点(“0”)时隐藏,然后将多边形设置为“可单击”为真。但是用户仍然可以单击地图并继续绘制多边形。我想禁用该事件侦听器,但在鼠标悬停时重新启用它。。这能做到吗?如果我使用Remove Listener,我是否可以将另一个侦听器重新附加到鼠标上方的多边形,以便他们可以编辑它 MapShaper.Feature.prototype

由于GoogleMapsAPIv3不支持多边形或多段线的开始或结束编辑,我正在尝试构建自己的一个

我正在为每个点绘制标记,然后为了完成编辑,我将所有标记设置为在单击第一个索引点(“0”)时隐藏,然后将多边形设置为“可单击”为真。但是用户仍然可以单击地图并继续绘制多边形。我想禁用该事件侦听器,但在鼠标悬停时重新启用它。。这能做到吗?如果我使用Remove Listener,我是否可以将另一个侦听器重新附加到鼠标上方的多边形,以便他们可以编辑它

MapShaper.Feature.prototype.poly=函数(类型){
var color=mapshapper.getColor(false),
路径=新的google.maps.MVCArray,
聚,
self=这个,
el=类型+“_b”;
如果(类型=“形状”){
poly=self.createShape({strokeWeight:3,fillColor:color},path);
}else if(类型=“行”){
poly=self.createLine({strokeWeight:3,strokeColor:color},path);
}
poly.markers=new google.maps.MVCArray;
google.maps.event.addListener(poly,“mouseover”,function(){
poly.markers.forEach(函数(polyMarker,索引){
polyMarker.setVisible(真);
});
});
MapShaper.Feature.prototype.createShape=函数(选项,路径){
var-poly;
poly=新的google.maps.Polygon({
可点击:false,
冲程重量:选择冲程重量,
fillColor:opts.fillColor
});
poly.setpath(新的google.maps.MVCArray([path]);
返回多边形;
}
MapShaper.Feature.prototype.createShape=函数(选项,路径){
var-poly;
poly=新的google.maps.Polygon({
可点击:false,
冲程重量:选择冲程重量,
fillColor:opts.fillColor
});
poly.setpath(新的google.maps.MVCArray([path]);
返回多边形;
}
google.maps.event.addListener(标记'click',函数(){
如果(!marker.index==0){
marker.setMap(空);
markers.removeAt(marker.index);
移除路径(marker.index);
重新索引(标记);
if(markers.getLength()==0){
MapShapper.removeFeature(poly.id);
}
}否则{
markers.forEach(函数(marker,index){
marker.setVisible(false)
});
poly.setOptions({clickable:true});
}
});

您可以使用全局变量执行几乎相同的操作,如下所示: (并设置disableListener=true;以禁用它)

var disableListener=false;
google.maps.event.addListener(标记'click',函数(){
如果(禁用侦听器)
返回;
如果(!marker.index==0)
marker.setMap(空);
}