アドレス検索で作成されたドラッグ可能なマーカーがあり、マーカーの周りに円を作成し、マーカーを移動するたびに円を削除し、マーカーの移動を停止すると別の円を作成する必要があります。問題は、検索を 1 回だけ行うと問題なく動作し、2 回目の検索を行うと、新しいマーカーがある場所に新しい円が作成され、マーカーまたはマップを移動しようとすると、他の 2 つの円が作成されることです。どこからともなく作成され、2 つの追加の円が作成された後にマーカーを移動すると、これらの 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
);
}