"Найти ближайший" процесс для веб-приложения для мобильных устройств? - PullRequest
2 голосов
/ 23 ноября 2010

В поисках реализации процесса «Найти ближайший» для мобильного веб-приложения, который будет автоматически выбирать наиболее близкое совпадение элемента в раскрывающемся списке в форме на основе текущего местоположения пользователя.

Предполагая, что у нас есть широта / долгота для каждого элемента нашего списка и местоположение людей с мобильного устройства, каков наилучший способ найти ближайший элемент? У нас будет около 150-200 возможных элементов, и нам нужен ближайший к пользователю, чтобы мы могли установить его по умолчанию.

Есть ли способ эффективно сделать это в JS или лучше подходит для серверной части?

1 Ответ

1 голос
/ 23 ноября 2010

Вам понадобится цикл для вычисления расстояния и впредь, ближайший. Используйте формулу Haversine:

var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad(); 
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
        Math.sin(dLon/2) * Math.sin(dLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var distance = R * c;

Лучше запустить свои собственные тесты, чтобы выяснить, будет ли лучше сделать это на стороне сервера или на стороне клиента.

...