Может ли Bing или GMaps API выполнить поиск в стиле «найди ближайшего», используя предоставленную коллекцию XML / RSS? - PullRequest
2 голосов
/ 09 марта 2010

Может ли Bing или Google Maps разрешить вам передать коллекцию точек и затем опросить эту коллекцию, чтобы построить только X ближайших точек?

Я спрашиваю, потому что может быть трудно предварительно отфильтровать эти данные, и было бы намного проще предоставить весь список и отфильтровать его в самом API.

Ответы [ 2 ]

0 голосов
/ 12 апреля 2011

Я просто смотрю на это для запроса клиента, который у меня был. Насколько я вижу, лучший способ сделать это - использовать Google (или аналогичный) для геокодирования ваших адресов при их вводе (то есть преобразовать почтовый адрес в широту и долготу). ).

Когда вы придете, «найдите моего ближайшего», вы захотите получить почтовый индекс (вероятно) человека, который ищет, и затем геокодировать его, или, возможно, длинный, если вы можете получить данные прямо. мобильного устройства.

Как только у вас будет лат-лонг для ваших фиксированных позиций и то же самое для вашего пользователя, я считаю, что вы можете использовать формула haversine (я говорю это, но на самом деле я не пробовал - Я не математик) это математический способ вычисления расстояния между двумя точками вокруг сферы. Земля не совсем сфера, но достаточно близко для такого рода целей.

Таким образом, вы только один раз просматриваете внешнюю службу, чтобы найти местоположение своих пользователей (при условии, что вы геокодировали свои фиксированные точки при их создании и сохранили их для дальнейшего использования), а затем выполняете рабочий сервер осла. сторона для расчета расстояний. Вы могли бы даже создать собственную функцию SQL, чтобы вытащить ее из базы данных по порядку.

0 голосов
/ 09 марта 2010

Большую часть работы вам придется выполнять самостоятельно, API не будут выполнять за вас все функции.

Однако я знаю, что вы можете найти расстояние между двумя точками, используя Google Maps API. Взгляните на метод distanceFrom в справочнике API . Это будет только вопрос вычисления расстояний для каждой точки в вашем XML-файле, а затем взятия наименьших чисел X.

Что касается вашего комментария - да, я думаю, что циклически проходить через 300 пунктов на стороне клиента может быть немного много. Одним из решений было бы сохранить координаты GPS для каждой точки в вашем XML-файле (если это еще не сделано), а затем создать функцию, которая удаляла бы большинство точек с помощью простого калькулятора расстояний (вам нужно было бы изучить это самостоятельно). Затем передайте оставшиеся точки (возможно, 30 из них) в API, чтобы вычислить более точные расстояния.

...