Ответ 1
Вам следует искать формулу Хаверсина, но хорошим началом может быть:
- Создание локатора хранилища с PHP, MySQL и Google Maps - См. раздел "Поиск местоположений с MySQL"
- Geo/Пространственный поиск с MySQL
Ссылаясь на первый URL:
Здесь оператор SQL, который найдет ближайшие 20 местоположений, находящихся в радиусе 25 миль от координаты 37, -122. Он вычисляет расстояние, основанное на широте/долготе этой строки и целевой широте/долготе, а затем запрашивает только строки, где значение расстояния меньше 25, заказывает весь запрос по расстоянию и ограничивает его до 20 результатов. Чтобы выполнить поиск километров вместо миль, замените 3959 на 6371.
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;