Вы должны иметь в виду, что расстояние между долготами не является постоянным. Градусы широты параллельны и находятся на расстоянии приблизительно 111 километров (69 миль), но широта широты широты на экваторе равна 111 километрам и постепенно сходится к нулю на полюсах.
При 40 ° к северу или югу расстояние между градусами долготы составляет около 85 километров (53 мили), тогда как расстояние между широтами остается примерно одинаковым на уровне 111 километров ( Источник ). Если ваши геообъекты будут ограничены только определенной областью, и допустим очень грубый фильтр, вы можете использовать эту информацию для определения смещений x
и y
.
Однако, если ваши объекты будут редкими по всему земному шару, вы должны вместо этого вычислить расстояние большого круга . К счастью, это относительно просто с формулой haversine . Вы можете прочитать далее и проверить реализацию в Рассчитать расстояние, направление и многое другое между точками широты / долготы Крисом Венессом.
Если у вас будет только несколько геообъектов, вы можете просто рассчитать расстояние по большому кругу от вашей точки до каждого геообъекта. Затем просто сортируйте список результатов по расстоянию и фильтруйте по некоторому порогу в милях или километрах.
Однако, если у вас будет много геообъектов, вам следует рассмотреть возможность использования базы данных с возможностями пространственного индексирования . MySQL , PostgreSQL и SQL Server 2008 имеют геопространственные функции (как исходные, так и через расширения), которые включают пространственное индексирование и реализации формулы haversine.