我有一个使用地址搜索创建的可拖动标记,我需要在标记周围创建一个圆圈,每当我移动标记时删除圆圈并在我停止移动标记时创建另一个圆圈。问题是:当我只进行一次搜索时,它没有一个问题,当我第二次搜索时,它会在新标记所在的位置创建一个新圆圈,在我尝试移动标记或地图后,其他 2 个圆圈不知从何处创建,如果我在创建另外两个圆圈后移动标记,这两个圆圈将转到第一个标记的起始坐标(现在已删除)和同一个第一个标记的最终坐标。我怎样才能永远删除这些圈子?我已经尝试过 group.removeObject、group.removeAll 以及 delete circle、circle = null 和 circle = undefined,这些都没有奏效。
Uncaught IllegalOperationError: H.map.Group#removeObject object not found
function addDraggableMarker(map, behavior) {
group.removeAll();
let marker = new H.map.Marker(
{ lat: latit, lng: longi },
{
volatility: true,
}
);
marker.draggable = true;
group.addObject(marker);
circle = new H.map.Circle({ lat: lati, lng: long }, raioF);
group.addObject(circle);
map.addEventListener(
"dragstart",
function (ev) {
group.removeObject(circle);
let target = ev.target,
pointer = ev.currentPointer;
if (target instanceof H.map.Marker) {
let targetPosition = map.geoToScreen(target.getGeometry());
target["offset"] = new H.math.Point(
pointer.viewportX - targetPosition.x,
pointer.viewportY - targetPosition.y
);
behavior.disable();
}
},
false
);
map.addEventListener(
"dragend",
function (ev) {
let target = ev.target;
if (target instanceof H.map.Marker) {
behavior.enable();
latit = marker.b.lat;
longi = marker.b.lng;
}
circle = new H.map.Circle({ lat: lati, lng: long }, raioF);
group.addObject(circle);
},
false
);
map.addEventListener(
"drag",
function (ev) {
let target = ev.target,
pointer = ev.currentPointer;
if (target instanceof H.map.Marker) {
target.setGeometry(
map.screenToGeo(
pointer.viewportX - target["offset"].x,
pointer.viewportY - target["offset"].y
)
);
}
},
false
);
}