Сортировать список по широте / долготе - PullRequest
4 голосов
/ 05 апреля 2011

Итак, у меня есть карта Google на моем сайте. Мне нужно, чтобы пользователь мог где-то центрировать карту, а затем на стороне сервера я должен иметь возможность сортировать список объектов (каждый из которых имеет свойства lat и long) на основе видимой части карты на переднем конце. Имеет ли это смысл? Подумайте, как Yelp.com сортирует рестораны на основе карты, которую пользователи могут увеличивать / уменьшать.

Итак, сначала список избавился бы от любых объектов, которые не находятся в области карты, основываясь на их свойствах lat / long, а затем отсортировал бы оставшиеся объекты по тем, какие из них ближе всего к центру карты. .

Чтобы сделать это, что мне нужно было бы передать серверу из внешнего интерфейса, и как только он окажется на сервере, как мне выполнить эту сортировку?

Ответы [ 3 ]

4 голосов
/ 05 апреля 2011

вычислите great_circle_distance, затем сортируйте по наименьшему числу.

1 голос
/ 05 апреля 2011

Судя по звуку, вы можете сохранить плитки или что-то, что вы извлекаете, в нечто вроде дерева квадрантов. Затем вы можете передать координаты на сервер, сервер может извлечь для вас видимые объекты в этой апертуре, отсортировать их и затем отправить обратно.

1 голос
/ 05 апреля 2011

Используйте формулу Хаверсайна для расчета расстояния по большому кругу:

http://en.wikipedia.org/wiki/Haversine_formula

Затем сортируйте сначала по кратчайшему расстоянию (= ближайшему).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...