排序地理位置指向我的点钛

时间:2015-05-20 17:13:57

标签: android ios titanium google-maps-api-2

我正在使用 Titanium Appcelerator Android& IOS 即可。

我只有一个lat lng值数组,我想对最接近我指定纬度和经度的数组进行排序。  我怎样才能获得这些价值.Pasasae帮助。

2 个答案:

答案 0 :(得分:0)

实现这一目标的一种方法可能是:  1.使用Haversine公式计算指定位置(源纬度,源经度)与数组中项目(目标纬度,目标经度)之间的距离。  2.对阵列中的每个项重复步骤1。  3.对数组进行排序。

以下几个链接可能会派上用场: - Using the Haversine Formula in Javascript

Sorting multiple JavaScript array

答案 1 :(得分:0)

你可以用它来计算两个lat long之间的距离:

function distance(lat1, lon1, lat2, lon2, unit) {
    var radlat1 = Math.PI * lat1/180
    var radlat2 = Math.PI * lat2/180
    var radlon1 = Math.PI * lon1/180
    var radlon2 = Math.PI * lon2/180
    var theta = lon1-lon2
    var radtheta = Math.PI * theta/180
    var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);

    dist = Math.acos(dist)
    dist = dist * 180/Math.PI
    dist = dist * 60 * 1.1515

    if (unit=="K") { dist = dist * 1.609344 }
    if (unit=="N") { dist = dist * 0.8684 }
    return dist
}

//:::  Passed to function:                                                    :::
//:::    lat1, lon1 = Latitude and Longitude of point 1 (in decimal degrees)  :::
//:::    lat2, lon2 = Latitude and Longitude of point 2 (in decimal degrees)  :::
//:::    unit = the unit you desire for results                               :::
//:::           where: 'M' is statute miles (default)                         :::
//:::                  'K' is kilometers                                      :::
//:::                  'N' is nautical miles

Source

按下阵列中的所有距离后,您可以根据需要轻松排序。