Я пишу веб-сайт бронирования в php, и мне нужна библиотека или удаленная служба (похожая на google maps api), которая вычисляет расстояние между двумя адресами.
В идеале я предпочитаю расстояние до дороги, но мне все равно, о каком расстоянии.
Вы можете мне помочь?
Большое вам спасибо, всякая помощь будет приветствоваться.
API Карт Google – Направления – хорошее место для начала.
Отправка запроса с использованием шаблона URL:
http://maps.google.com/maps/api/directions/xml?origin=[FROM_ADDRESS]&destination=[TO_ADDRESS]&sensor=false // [FROM_ADDRESS] is a Google-Recognisable address for the Start // [TO_ADDRESS] is a Google-Recognisable address for the End
Пример: «Как добраться до Карнеги-холла (от Sony Music Entertainment)»
Начальный адрес: 550 Мэдисон-авеню, Нью-Йорк, Нью-Йорк, США. Окончательный адрес: 881 7th Avenue, New York, NY, United States
URL-адрес XML-указаний от Google будет
http://maps.google.com/maps/api/directions/xml?origin=550+Madison+Avenue,+New+York,+NY,+United+States&destination=881+7th+Avenue,+New+York,+NY,+United+States&sensor=false
Результат:
<DirectionsResponse> <status>OK</status> <route> <summary>E 57th St</summary> <leg> <step> <travel_mode>DRIVING</travel_mode> <start_location> <lat>40.7612400</lat> <lng>-73.9731300</lng> </start_location> <end_location> <lat>40.7622900</lat> <lng>-73.9723600</lng> </end_location> <polyline> <points>wdxwF`{nbMqEyC</points> <levels>BB</levels> </polyline> <duration> <value>9</value> <text>1 min</text> </duration> <html_instructions> Head <b>northeast</b> on <b>Madison Ave</b> toward <b>E 56th St</b> </html_instructions> <distance> <value>133</value> <text>436 ft</text> </distance> </step> <step> <travel_mode>DRIVING</travel_mode> <start_location> <lat>40.7622900</lat> <lng>-73.9723600</lng> </start_location> <end_location> <lat>40.7655300</lat> <lng>-73.9800500</lng> </end_location> <polyline> <points>ikxwFfvnbMgS`o@</points> <levels>BB</levels> </polyline> <duration> <value>148</value> <text>2 mins</text> </duration> <html_instructions> Turn <b>left</b> at the 2nd cross street onto <b>E 57th St</b> </html_instructions> <distance> <value>741</value> <text>0.5 mi</text> </distance> </step> <step> <travel_mode>DRIVING</travel_mode> <start_location> <lat>40.7655300</lat> <lng>-73.9800500</lng> </start_location> <end_location> <lat>40.7651800</lat> <lng>-73.9803000</lng> </end_location> <polyline> <points>q_ywFhfpbMdAp@</points> <levels>BB</levels> </polyline> <duration> <value>39</value> <text>1 min</text> </duration> <html_instructions> Turn <b>left</b> at the 3rd cross street onto <b>7th Ave</b> <div style="font-size:0.9em">Destination will be on the left</div> </html_instructions> <distance> <value>45</value> <text>148 ft</text> </distance> </step> <duration> <value>196</value> <text>3 mins</text> </duration> <distance> <value>919</value> <text>0.6 mi</text> </distance> <start_location> <lat>40.7612400</lat> <lng>-73.9731300</lng> </start_location> <end_location> <lat>40.7651800</lat> <lng>-73.9803000</lng> </end_location> <start_address>550 Madison Ave, New York, NY 10022, USA</start_address> <end_address>881 7th Ave, New York, NY 10019, USA</end_address> </leg> <copyrights>Map data ©2010 Google, Sanborn</copyrights> <overview_polyline> <points>wdxwF`{nbMqEyCgS`o@dAp@</points> <levels>B@?B</levels> </overview_polyline> </route> </DirectionsResponse>
Таким образом, самый быстрый маршрут между этими двумя точками будет иметь детали:
Продолжительность в секундах
DirectionsResponse> route> leg> duration> value
Продолжительность в обычном тексте
DirectionsResponse> route> leg> duration> text
Расстояние в базовом блоке локальных измерений (футов или метров)
DirectionsResponse> route> leg> distance> value
Расстояние в обычном тексте для локальных измерений (мили или километрах)
DirectionsResponse> route> leg> distance> text