Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 清除地图侦听器会导致GoogleMaps V3中的可拖动选项失败_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 清除地图侦听器会导致GoogleMaps V3中的可拖动选项失败

Javascript 清除地图侦听器会导致GoogleMaps V3中的可拖动选项失败,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我发现了一个奇怪的转基因行为,不知道这是一个错误?我正在使用以下代码禁用和启用地图拖动: var dragDisabled=false; 函数按钮单击(){ 如果(拖动禁用){ enableDrag(); dragDisabled=false; }否则{ 禁用拖动(); dragDisabled=true; } } 函数disableDrag(){ map.setOptions({ 可拖动:错误 }); //最初将侦听器添加到映射到此处 } 函数enableDrag(){ map.setOpt

我发现了一个奇怪的转基因行为,不知道这是一个错误?我正在使用以下代码禁用和启用地图拖动:

var dragDisabled=false;
函数按钮单击(){
如果(拖动禁用){
enableDrag();
dragDisabled=false;
}否则{
禁用拖动();
dragDisabled=true;
}
}
函数disableDrag(){
map.setOptions({
可拖动:错误
});
//最初将侦听器添加到映射到此处
}
函数enableDrag(){
map.setOptions({
德拉格布尔:是的
});
google.maps.event.clearInstanceListeners(映射“拖动”);
}
函数initMap(){
map=新建google.maps.map(
document.getElementById('map'),
{
缩放:8,
中心:{
拉脱维亚:-37,
液化天然气:176
}
}
);
}
#地图{
身高:100%;
}
html,
身体{
身高:100%;
保证金:0;
填充:0;
}
#btn开关{
位置:绝对位置;
右:20px;
顶部:20px;
z指数:1;
}
切换可拖动

您应该使用clearListeners而不是clearInstanceListeners

我制作了一个示例应用程序进行演示,请参见下面的代码片段:

var映射;
var draggable=true;
var toggle=document.getElementById(“btn toggle”);
函数initMap(){
map=new google.maps.map(document.getElementById('map'){
缩放:13,
中心:{
拉脱维亚:59.325,
液化天然气:18.070
},
可拖动的:可拖动的
});
}
toggle.addEventListener('click',function(){
如果(可拖动){
可拖动=错误;
禁用拖动();
返回;
}
draggable=true;
enableDrag();
});
函数disableDrag(){
map.setOptions({
可拖动的:可拖动的
});
//将文本添加到映射
}
函数enableDrag(){
map.setOptions({
可拖动的:可拖动的
});
google.maps.event.clearListeners(映射“拖动”);
}
#地图{
身高:100%;
}
html,
身体{
身高:100%;
保证金:0;
填充:0;
}
#btn开关{
位置:绝对位置;
右:20px;
顶部:20px;
z指数:1;
填充:20px;
}

拖动
可拖动开关

Hide your key plsMy API key is restricted,感谢您提醒我们您的示例正在运行,因为您使用的是
clearListeners
方法。但是我使用的是
clearInstanceListeners
方法。我试图更改您的示例中的方法,但您的代码停止工作。因此,如果我不知道实际添加了哪些侦听器,则需要额外的代码来计算这些侦听器。如果使用clearInstanceListeners,它将禁用所有事件,甚至会禁用setZoom,因此不要在地图实例上使用它,除非您想创建另一个地图实例。