Получить все координаты внутри области - PullRequest
0 голосов
/ 08 февраля 2019

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

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

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

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

1 Ответ

0 голосов
/ 11 февраля 2019

Вы можете хранить несколько упорядоченных списков индексов и координат, каждый из которых основан на 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-значений и рассмотреть только перекрытие этих индексов.(Вы все равно должны сделать проверку расстояния для этих точек впоследствии.)

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

...