Я получил помощь здесь с запросом, чтобы найти записи с определенным радиусом точки (широта / долгота).Запрос отлично подходит для поиска записей, которые не слишком близки к фактическому центру.Таким образом, он может найти вещи в пределах 400 миль, но не 20.
Я использую MySQL.Вот запрос:
select id , lat , lng , ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) *
cos( radians( lng ) - radians(-122.517349) ) + sin( radians(37.780182) ) * sin( radians( lat ) ) ) ) AS distance FROM my_table HAVING distance < 1000 ORDER BY distance LIMIT 0 , 50
А вот небольшой набор данных:
lat lng
| 0.000000 | 0.000000 |
| 37.223465 | -122.090363 |
| 39.320980 | -111.093735 |
| 38.031715 | -84.495132 |
| 37.787144 | -122.493263 |
| 52.975361 | -1.458620 |
| 40.848557 | -111.906883 |
| 40.572498 | -111.859718 |
А моей центральной отправной точкой является Сан-Франциско, широта / долгота 37,787144, -122,493263
И поэтому ни один из ближайших лат / lng не может быть найден.
Спасибо, Алекс