Получить все координаты внутри области

Я работаю с API карт Google и имею несколько координат (маркеров) по всему миру. Как лучше всего получить список маркеров точек внутри мили с маркером «А» в центре?

Первый способ, который я думаю, - это вычислить расстояние между точкой A и всеми остальными точками и отсортировать массив. Это работает, но требует n взаимодействий.

Второй способ будет хранить координаты и «кусок» (город, штат, страна) и повторять предыдущий метод, выполняя поиск только внутри этого «куска». Это по-прежнему n, но теперь "n" меньше.

Как лучше хранить данные и работать с ними?


person Joao Augusto    schedule 08.02.2019    source источник
comment
Ваш вопрос слишком широк и неясен. Как вы храните координаты? что ты уже испробовал? Вы проводили какие-либо исследования, прежде чем спрашивать? stackoverflow.com/questions /16561296/   -  person MrUpsidown    schedule 08.02.2019


Ответы (1)


Вы можете хранить несколько упорядоченных списков указателей и координат, каждый из которых основан либо на x, y или z, либо на информации о долготе или широте.

Например:

Points = {(2,3), (6,4), (7,1), (1, 9)};

xList = {1, 2, 6, 7};
xIndexList = {3, 0, 1, 2};

yList = {1, 3, 4, 9};
yIndexList = {2, 0, 1, 3};

Затем вы можете отфильтровать значения x в пределах 1 мили от координаты x точки A и то же самое для значений y и рассмотреть только перекрытие этих индексов. (После этого вам все равно следует выполнить проверку расстояния для этих точек.)

Это немного громоздко, и нужно быть осторожным с полюсами и линиями перемены дат при использовании сферических координат, но это, по крайней мере, быстро.

person MinosIllyrien    schedule 11.02.2019