Javascript 谷歌地图中最近的5个位置(标记)

Javascript 谷歌地图中最近的5个位置(标记),javascript,google-maps,google-maps-api-3,marker,Javascript,Google Maps,Google Maps Api 3,Marker,我使用谷歌地图把我的json标记放在地图上 这是我的主要代码 function initialize(pram) { var mapOptions = { center: new google.maps.LatLng(33.3118943, 44.4959916), zoom: 11, mapTypeId: google.maps.MapTypeId.ROADMAP }; var infoWindow = new google.maps.InfoWindow(); v

我使用谷歌地图把我的json标记放在地图上 这是我的主要代码

function initialize(pram) {

var mapOptions = {
    center: new google.maps.LatLng(33.3118943, 44.4959916),
    zoom: 11,
    mapTypeId: google.maps.MapTypeId.ROADMAP
};

var infoWindow = new google.maps.InfoWindow();
var map = new google.maps.Map(document.getElementById("map"), mapOptions);

$.getJSON('data.php?search=' + pram, function (data) {

    $.each(data.points, function (i, value) {

        var marker = new google.maps.Marker({
            position: new google.maps.LatLng(value.lat, value.lon),
            map: map
        });

        google.maps.event.addListener(marker, 'click', portInfo);

        function portInfo() {
            $("#moreInfoId").html(value.id);
            $("#moreInfoPortName").html(value.port_name);
            $("#moreInfoTime").html(value.time);
            $('#mapModal').modal();
        }
    });
});
}

我只想当我点击标记时,得到最近的5个标记
我是如何做到这一点的?

一种方法是用一些逻辑来确定两点之间的距离。然后使用该逻辑对标记数组进行排序(必须将它们存储在一个数组中)并检索前五个标记

Sort将使用两个比较的对象作为参数,因此需要部分应用作为参考的对象来计算距离。这可能是执行排序的逻辑:

功能距离(p1、p2){
返回Math.sqrt(Math.pow((p2.lat-p1.lat),2)+Math.pow((p2.lon-p1.lon),2));
}
功能排序距离(me、a、b){
返回a==me?1:b==me?-1:distance(me,a)-distance(me,b);
}
虚拟变量=[{lat:6,lon:6},{lat:7,lon:1},{lat:1,lon:8},{lat:9,lon:10},{lat:5,lon:4},{lat:3,lon:2},{lat:6,lon:7},{lat 2,lon:7},{lat 10,lon:9},{lat 4,lon 3}];
dummy.forEach(函数(me){
log('我的五个最近点是:');
log(dummy.sort(sortByDistance.bind(null,me)).slice(0,5));
});可能重复的