weixin_33709590 2017-09-19 16:52 采纳率: 0%
浏览 53

通过ajax对位置进行排序

I have a JSON object of latitude and longitude locations. I want to list them in the order they are closest to my current lat and long. Is there a way to query using AJAX to get an array of locations in the order of their proximity to my current location. If not, what the best approach I can use.

  • 写回答

1条回答 默认 最新

  • weixin_33720452 2017-09-19 17:01
    关注

    You can enumerate yours array of coordinates with this function (from this answer):

    function getDistanceFromLatLonInKm(lat1,lon1,lat2,lon2) {
      var R = 6371; // Radius of the earth in km
      var dLat = deg2rad(lat2-lat1);  // deg2rad below
      var dLon = deg2rad(lon2-lon1); 
      var a = 
        Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * 
        Math.sin(dLon/2) * Math.sin(dLon/2)
        ; 
      var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
      var d = R * c; // Distance in km
      return d;
    }
    
    function deg2rad(deg) {
      return deg * (Math.PI/180)
    }
    

    Or you can divide yours coordinates array per sector like:

    if lat1 is greater than 70.000 and lesser than 75.000 then this is sector A and so on.

    Finally, when you have these sectors you can search in specific one to avoid long calculations.

    评论

报告相同问题?