Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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 如何在传单中使用自定义控件切换可单击标记属性?_Javascript_Jquery_Maps_Leaflet - Fatal编程技术网

Javascript 如何在传单中使用自定义控件切换可单击标记属性?

Javascript 如何在传单中使用自定义控件切换可单击标记属性?,javascript,jquery,maps,leaflet,Javascript,Jquery,Maps,Leaflet,正如我所见,Marker不包含更改clickable属性的方法(true/false)。在创建所有标记后,我需要多次更改此属性(我知道我可以在旧标记的基础上创建新标记,但这确实是一项开销,我希望避免),此时我尝试使用此方法处理自定义按钮上的onclick事件: function makeMarkersClickable() { for (var id in myMarkers) { var marker = myMarkers[id]; marker.options.clic

正如我所见,Marker不包含更改clickable属性的方法(true/false)。在创建所有标记后,我需要多次更改此属性(我知道我可以在旧标记的基础上创建新标记,但这确实是一项开销,我希望避免),此时我尝试使用此方法处理自定义按钮上的onclick事件:

function makeMarkersClickable() {
  for (var id in myMarkers) {
    var marker = myMarkers[id];
    marker.options.clickable = true;
    marker.clickable = true;
  }
}

很明显,它不起作用。似乎应该有一种方法来更新整个地图或类似的东西来解决这个问题

这个问题有两种解决方案:

  • “我知道我可以在旧的标记的基础上创建一个新的标记,但这确实是开销,我希望避免”:你会这样做。这是更好的解决方案,您不应该过早地对此进行优化。不可设置选项是有原因的
  • clickable
    始终设置为
    true
    ,并设置事件侦听器

刚刚尝试了你的第二个建议。使用clickable创建标记后:true;我使用了marker.off('click');现在,当我尝试单击标记时,它会显示一个弹出窗口。但这对我来说是完全不能接受的。老实说,我使用clickable:false作为一种解决方法,以防止通过单击标记显示弹出窗口。也许你能帮我解决这个问题,我最近为这个问题创建了一个单独的问题,更不用说我找到了我需要的所有答案。我检查了我的另一个问题,我在那里找到了答案,现在我不需要再切换弹出窗口了,就像你的第二个建议对我有用一样。我第一次犯了个错误,但后来我明白了working@tmcv,我是否应该使用相同的startegy来切换draggable?