javascript - JavaScript - 在谷歌地图上动态移动多个标记而不重复
问题描述
我使用下面的代码在谷歌地图上显示多个标记,其中finalArray2
包含多个纬度和经度。finalArray2
也动态更改以显示多个标记的移动。
for (let key in finalArray2) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(finalArray2[key][0], finalArray2[key][1]),
map: map,
marker_id: key
});
}
上面的代码显示重复标记,我正在尝试使用删除标记
marker.setMap(null)
但问题是它正在删除所有标记。
我不知道在哪里放置这个标记删除代码。
解决方案
我的建议是在创建标记时将其推送到新数组以及事先将位置创建为对象。我是否还建议您也将数据放入对象数组中。例子:
markerData = [
{
key: "key",
position {
lat: LAT,
lng: LNG
}
}
]
let markers = [];
markerData.foreach(mark) {
marker = new google.maps.Marker({
position: mark.position,
map: map,
marker_id: mark.key
});
markers.push(marker);
}
然后有一个单独的函数接收标记对象并将其映射设置为空。甚至可能有两个单独的功能,一个用于删除单个标记,一个用于删除所有标记。单身的:
function removeMarker(marker) {
marker.setMap(null)
}
全部:
function removeAllMarkers() {
markers.foreach(marker => {
removeMarker(marker);
});
}
推荐阅读
- sql - Oracle - 具有连接条件的外部连接
- javascript - 使用javascript从日期到日期验证
- r - 如何在 R 中创建分类区域地图
- php - Laravel MYSQL 如果 DB::commit 未添加跳过 id 并且添加时需要后续一个
- c++ - 使用新的移动语义,什么时候不应该在范围内使用引用?
- kotlin - Kotlin 流排序
- python - 最大和增加子序列
- ruby - ActiveAdmin 嵌套下拉菜单
- json-deserialization - 带有反序列化 JSon 对象的 DotLiquid Hash.FromAnonymousObject
- python - 累计金额未知利率求解