Подтвердить что ты не робот

REST API для дистанционного управления?

Есть ли служба, которая даст мне расстояние между двумя адресами? Очевидно, что API Карт Google требует, чтобы вы отображали карту, которую я не хочу делать (на этой конкретной странице), и я хотел бы просто уловить данные и сохранить их в моей БД после того, как пользователь отправит форму, а чем ждать, когда JS сделает это.


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

4b9b3361

Ответ 1

API-интерфейс MapQuest Directions основан на HTTP Querystring (я не уверен, что он полностью RESTful). Может получить ответ XML или JSON. Просто нужно отправить ему HTTP-запрос GET.

http://developer.mapquest.com/web/products/open/directions-service

Используйте параметр ответа "расстояние".

Ответ 2

У меня нет достаточной репутации на SO, чтобы прокомментировать ответ, но я просто хотел быть ясным, что, вопреки голосовому правильному ответу, API Google Directions API должен придерживаться API Карт Google. Если вы прокрутите вниз по ссылке, вы увидите:

Примечание. API-интерфейс Directions может использоваться только в сочетании с отображением результатов на карте Google; использование данных Directions без отображения карты, для которой запрашивались данные маршрутов, запрещается. Кроме того, расчет направлений генерирует авторские права и предупреждения, которые должны отображаться пользователю каким-то образом. Подробную информацию о разрешенном использовании см. В Ограничениях лицензий на использование API Карт API.

Ответ 3

Можно ли использовать объект Google Maps GDirections? Это может вернуть текстовые направления вместо наложения карты, если вызывается с объектом div. Оттуда вы можете использовать функции getDistance (или getDuration). Вы всегда можете использовать невидимый div для возврата, если вы не хотите, чтобы что-либо отображалось на странице.

Начать здесь
http://code.google.com/apis/maps/documentation/examples/directions-advanced.html
http://code.google.com/apis/maps/documentation/reference.html#GDirections

И используйте этот пример кода

   var map;
    var directionsPanel;
    var directions;

    function initialize() {
      directionsPanel = document.getElementById("route");
      directions = new GDirections(null, directionsPanel);
      GEvent.addListener(directions , "load", onGDirectionsLoad);
      directions.load("from: 500 Memorial Drive, Cambridge, MA to: 4 Yawkey Way, Boston, MA 02215 (Fenway Park)");
    }

    function onGDirectionsLoad(){ 
      alert(directions.getDistance().html);
    }

Ответ 4

Вот мое решение:

  • Регистрация для сети разработчиков Mapquest.
  • Получить AppId
  • Откройте свою командную оболочку и запустите следующую команду (или используйте скрипач). Запуск ее через завиток даст вам гибкость для автоматизации вашего запроса.

    curl -X POST -H "Content-Type: application/json" -d '{locations: ["Salt Lake City, UT","Ogden, UT",],options: {allToAll: false}}' http://www.mapquestapi.com/directions/v2/routematrix?key=YOURKEYGOESHERE >> distance.txt
    
  • Сохраните команду выше со всеми вашими назначениями в пакетный или sh файл.

  • Теперь grep и проанализируйте файл distance.txt за то, что вам нужно.

Ответ 5

Взгляните на Navteq. Я использовал их сервис при разработке приложения для направления движения около 5 лет назад и получил хорошие результаты. В последнее время я не могу говорить за них. Я считаю, что лучший URL-адрес Служба маршрутизации Navteq

Ответ 6

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

http://openrouteservice.org/