2015-05-20 2 views
0

я создаю приложение с помощью Titanium AppceleratorAndroid & Ios.сортировать гео точки расположения в моей точки Titanium

У меня есть массив значений lg lng, я хочу отсортировать массивы, которые ближе всего к моей заданной широте и долготе. Как я могу получить эти значения. Помогите помочь.

ответ

0

Одним из способов достижения этого может быть: 1. Рассчитайте расстояние между указанным вами местоположением (широта источника, долгота долготы) и элемент в массиве (широта назначения, долгота назначения) с использованием формулы Хаверсина. 2. Повторите шаг 1 для каждого элемента массива. 3. Сортировка массивов.

Вот несколько ссылок, которые могут пригодиться: - Using the Haversine Formula in Javascript

Sorting multiple JavaScript array

0

вы можете использовать это, чтобы вычислить расстояние между двумя лат длиной:

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

После нажатия всех расстояний в массиве вы можете легко сортировать accor что вам нужно.