Google maps - найти города рядом с моим маршрутом - PullRequest
5 голосов
/ 12 мая 2011

Я хотел бы получить список всех городов, которые я мог бы пройти на своем пути между точкой A и точкой B

Ввод -
точка A как начало координат
точка B в качестве пункта назначения

Выход:
Маршрут между точкой A и точкой B (это очевидно)
И
список городов / населенных пунктов / мест, которые ближе, чем X миль к моему маршруту.

Я хотел бы представить пользователю список возможных путевых точек (достопримечательности, исторические места, парки и т. Д.)

Есть идеи, как это сделать?

1 Ответ

3 голосов
/ 13 мая 2011

Я считаю, что вам нужно сделать это в два этапа:

Первым шагом будет вычисление ломаной линии, представляющей маршрут между А и В (как вы говорите, это очевидно). Вы можете сделать это, используя BEST Maps REST (http://msdn.microsoft.com/en-us/library/ff701717.aspx) или SOAP (http://msdn.microsoft.com/en-us/library/cc966826.aspx) службы маршрутизации, например.

)

Когда вы запрашиваете маршрут у любой из этих служб, убедитесь, что вы хотите, чтобы в результаты был включен полный путь маршрута (параметр rpo для REST или параметр RoutePathType.Points для SOAP). Это даст вам массив всех точек, которые используются для построения пути маршрута - в противном случае вы просто получите сводку точек маршрута (т.е. только те точки на маршруте, в которых вам нужно что-то сделать - изменить дороги и т. Д.)

Как только вы получите массив точек, шаг второй - определить все те места, которые находятся на расстоянии x от пути, проведенного между этими точками. Хотя существует множество веб-сервисов, которые позволяют запрашивать места, лежащие в пределах x расстояния от отдельной точки (например, включая службу поиска Bing Maps и службу geonames findNearby), я не знаю ни о каких веб-сервисы, которые предоставляют эту функцию, поэтому вам придется предоставить ее самостоятельно.

Один из способов сделать это - использовать SQL Server 2008 или SQL Server Azure, загруженный дампом данных geonames allCountries из http://download.geonames.org/export/dump/. Затем вы можете построить геометрию LineString из точек в вашем пути маршрута и запросить список мест в базе данных с помощью запроса, например:

ВЫБРАТЬ * ИЗ всех стран, ГДЕ Location.STDistance (@RoutePath) <= 1000; </p>

Йоханнес Кебек опубликовал пример использования этого подхода на основе сервиса Bing SOAP Route и SQL Azure, который вы можете найти здесь: http://jkebeck.wordpress.com/2010/06/26/find-near-route-for-bing-maps-powered-by-sql-azure-spatial/

...