Я создаю мобильное приложение, используя Phonegap и JQuery.
Приложение собирает долготу и широту пользователей и хранит их в базе данных (используя скрипт PHP – веб-сервис), и с помощью некоторого алгоритма он обнаруживает, есть ли трафик или нет. Мне нужно захватить все значения долготы и широты из базы данных, которые близки друг к другу, скажем, в том же диапазоне улицы / 200 м.
Допустим, у вас есть список в базе данных с 5 lon / lat, которые находятся рядом друг с другом (на той же улице A), 3 lon / lat, которые находятся рядом друг с другом на какой-то улице B, а некоторые другие представляют пользователей случайно на других улицах , Может ли кто-нибудь сказать мне, как я могу определить значения lon / lat, которые находятся рядом друг с другом? Значения я сохраняю их как отдельные значения в базе данных MySQL, то есть одно поле для долготы и другое для широты.
Как только я получу lon / lat, которые находятся рядом друг с другом, мне нужно будет найти центральную точку между пользователями на улице A и пользователям на улице B, чтобы отметить как пробки на дорогах (на основе некоторых других обнаружений).
Вы должны изучить формулу Хаверсина. См. Ниже:
SELECT id, (3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance;
Это вернет все записи, которые находятся в пределах 25 миль от входной длинной / лат-пары.