Использование представлений, чтобы найти список пользователей поблизости, используя местоположение в аргументах - PullRequest
0 голосов
/ 15 октября 2011

Я использую drupal 6.X Я создаю API через модуль источника данных views и views, в котором я добавлю широту и долготу местоположения в конце URL, поскольку мы определяем аргументы в представлении, чтобы я могполучить список пользователей в порядке ближайшего первого.

1 Ответ

0 голосов
/ 15 октября 2011

Я думаю, было бы проще создать пользовательский модуль. Как правило, вы хотите использовать формулу Haversine относительно вашей долготы и широты:

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 LIMIT 0 , 20;

Это от http://code.google.com/apis/maps/articles/phpsqlsearch.html, и делает это:

найдет ближайшие 20 мест, которые находятся в радиусе 25 миль от координаты 37, -122. Он вычисляет расстояние на основе широты / долготы этой строки и целевой широты / долготы, а затем запрашивает только те строки, в которых значение расстояния меньше 25, упорядочивает весь запрос по расстоянию и ограничивает его 20 результатами. Для поиска по километрам вместо миль замените 3959 на 6371.

Я пробовал этот форум с MySQL, и он работает очень хорошо, у меня даже есть полноценный модуль, работающий на него, но, к сожалению, он работает на Drupal 7 и полностью полагается на систему управления данными, поэтому не будет полезен в вашем случае .

...