Javascript 如何根据传单中的latlng获取标记?

Javascript 如何根据传单中的latlng获取标记?,javascript,optimization,leaflet,markers,Javascript,Optimization,Leaflet,Markers,我想根据标记的坐标找到并移除标记。或删除给定几何图形中的所有标记。我知道的解决方案很少。第一种方法是将所有标记存储在地图或数组中,第二种方法是删除带有标记的整个级别,然后添加另一个(已更新)-如果我们谈论数千个标记,这两种解决方案的性能都不友好。我没有找到一种方法,通过它的坐标来获得一个标记 如果有人对此有任何想法,我会很高兴的。谢谢大家的关注 我已经完成了这样一个用于添加和删除标记的结构: let markerSet = {} const saveMarker = (coords, mark

我想根据标记的坐标找到并移除标记。或删除给定几何图形中的所有标记。我知道的解决方案很少。第一种方法是将所有标记存储在地图或数组中,第二种方法是删除带有标记的整个级别,然后添加另一个(已更新)-如果我们谈论数千个标记,这两种解决方案的性能都不友好。我没有找到一种方法,通过它的坐标来获得一个标记


如果有人对此有任何想法,我会很高兴的。谢谢大家的关注

我已经完成了这样一个用于添加和删除标记的结构:

let markerSet = {}

const saveMarker = (coords, marker) => {
    const [ key1, key2 ] = coords
    markerSet = {
        ...markerSet,
        [key1]: {
            ...markerSet[key1],
            [key2]: marker
        }
    }
}

const removePointer = (coords) => {
    const [ key1, key2 ] = coords
    const marker = markerSet[key1][key2]

    if (!marker)
        return

    markers.removeLayer(marker)
    delete markerSet[key1][key2]
}

coords
is latlng array

您可以在所有标记上循环,检查latlng是否相等,是否有数十万个标记?无论如何,按坐标获取标记是O(1),所有标记上的循环是O(2n),因此使用哈希表,将坐标作为键输入,并获取O(1)查找。如果有两个数据点具有相同的精确坐标,您仍然会遇到如何处理的问题。我通过将在同一位置附近具有~的标记合并起来来解决这个问题。哈希表是一个不错的解决方案,如果没有其他选择,我会继续这个,但是,我希望有更优雅的解决方案。我不想在没有需要的情况下存储包含50万项的哈希表。您从哪里知道要删除哪些latlng?也许您可以在html中引用标记