【问题标题】:Google Maps API - Get n closest markers from location [duplicate]Google Maps API - 从位置获取n个最近的标记[重复]
【发布时间】:2019-07-19 01:15:24
【问题描述】:

我已经使用 Maps API 创建了一个 Google 地图,现在我想找到离给定位置最近的 n 标记。我找到了this Fiddle,它显示了如何找到最近的单个标记,我该如何调整它以便找到最近的n 标记,而不仅仅是单个最近的标记?

function find_closest_marker(event) {
    var distances = [];
    var closest = -1;
    for (i = 0; i < markers.length; i++) {
        var d = google.maps.geometry.spherical.computeDistanceBetween(markers[i].position, event.latLng);
        distances[i] = d;
        if (closest == -1 || d < distances[closest]) {
            closest = i;
        }
    }
    console.log('Closest marker is: ' + markers[closest].getTitle());
}

【问题讨论】:

    标签: javascript google-maps-api-3


    【解决方案1】:

    不是有史以来最优雅的解决方案,但假设原始源代码应该能够完成这项工作。

    function find_closest_markers(event, n) {
        var markers_distances = [];
        for (i = 0; i < markers.length; i++) {
            var d = google.maps.geometry.spherical.computeDistanceBetween(markers[i].position, event.latLng);
            markers_distances[i] = {
                distance: d, 
                marker: markers[i]
            }
        }
        var closest_markers = markers_distances.sort((a, b) => {return a.distance-b.distance}).slice(0,n)
        return closest_markers.map((item) => {return item.marker})
    }
    

    【讨论】:

    • 谢谢,但这似乎返回了我所有的标记,不管我作为n传递给函数的数字是多少。
    • 改了解决办法,可以试试这样吗?适用于我的模拟对象。
    • 是的,将0, 添加到slice 似乎可以解决问题。谢谢!
    猜你喜欢
    • 2015-03-10
    • 2013-08-12
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 2011-05-02
    相关资源
    最近更新 更多