以下代码在启用和禁用标记拖动的行上收到错误(“无法获取属性'禁用'未定义或空引用”)。标记在地图上显示得很好,并且可以在创建线指示时拖动。放置警报代替启用线会产生正确的对象,因此我相信标记已定义。我需要做些什么来启用IHandler接口吗?还是我错过了别的什么?
var marker = L.marker(L.latLng(lat,lon), {icon:myIcon, draggable:'true'})
.bindLabel(name, {noHide: true,direction: 'right'});
marker._myId = name;
if (mode === 0) {
marker.dragging.enable();
} else {
marker.dragging.disable();
}
答案 0 :(得分:4)
我今天遇到了类似的问题(也许是同一个问题),这是由于传单中的错误(参见leaflet issue #2578),更改标记的图标会使该标记上的任何拖动处理无效。这使得对marker.dragging.disable()
的任何调用都失败。
fix在撰写本文时尚未将其制作成传单。解决方法是在更新可拖动状态后更改图标(如果可能)。
marker.dragging.disable();
marker.setIcon(marker_icon);
答案 1 :(得分:1)
使用以下代码使对象可拖动。将elementToDrag
设置为您想要拖动的对象,在您的情况下:“marker”
var draggable = new L.Draggable(elementToDrag);
draggable.enable();
要禁用拖动,请使用以下代码:
draggable.disable()
使DOM元素可拖动的类(包括触摸支持)。 内部用于地图和标记拖动。仅适用于元素 使用DomUtil#setPosition
定位的
如果您只想禁用标记的拖动选项,则可以使用以下代码(其中“marker”是标记对象的名称):
marker.dragging.disable();
marker.dragging.enable();
答案 2 :(得分:0)
我还没有找到答案,但我的解决方法是:
var temp;
if (mode === 0) {
temp = true;
} else {
temp = false;
}
var marker = L.marker(L.latLng(lat,lon), {icon:myIcon, draggable:temp})
.bindLabel(name, {noHide: true,direction: 'right'});
marker._myId = name;
幸运的是,我可以在可拖动时更改我的图标。