用于驱动距离的REST API?

时间:2010-02-19 02:23:18

标签: api maps

是否有一项服务可以让我在两个地址之间行驶距离?显然Google Maps API要求您显示我不想做的地图(在该特定页面上),并且我想在用户提交表单后将数据保存到我的数据库中,而不是而不是等待JS做这件事。


如果相关,这将进入Django应用程序。我发现CloudMade提供了一个Python API,这很不错,除了它们最新的dev版本中有一个bug(不能使用API​​对象),但更重要的是,它对加拿大的支持很糟糕(不能'找到周围任何一个主要城市的路线!)。

7 个答案:

答案 0 :(得分:9)

MapQuest的Directions API基于HTTP Querystring(我不确定它是否完全是RESTful)。可以获得XML或JSON响应。只需要发送一个HTTP GET请求。

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

使用“距离”响应参数。

答案 1 :(得分:8)

我在SO上没有足够的声誉对答案发表评论,但我只是想明确指出,与投票的正确答案相反,Google Directions API必须遵守Google Maps API。如果向下滚动提供的链接,您将看到:

  

注意:Directions API只能与在Google地图上显示结果一起使用;使用路线数据而不显示请求数据的地图的地图是禁止的。另外,方向的计算产生版权和警告,必须以某种方式向用户显示。有关允许使用的完整详细信息,请参阅Maps API服务条款许可限制。

答案 2 :(得分:3)

是否可以使用Google地图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);
    }

答案 3 :(得分:3)

这是我的解决方案:

  1. 注册Mapquest Developer网络。
  2. 获取AppId
  3. 打开命令shell并运行以下命令(或使用fiddler)但是通过curl运行它会让您灵活地自动执行请求

    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
    
  4. 将所有目的地的上述命令保存到批处理或sh文件中。

  5. 现在grep并解析你的distance.txt文件,以满足你的需要。

答案 4 :(得分:2)

那里有免费服务,但数据质量在某些地区可能有问题/不存在。请注意数据上的许可证,存储在您自己的数据库中可能是违规行为。

http://openrouteservice.org/

答案 5 :(得分:2)

看看Navteq。大约5年前,我用他们的服务开发了一个行车路线应用程序,并取得了很好的效果。不过最近不能说话。我认为最好的网址是Navteq Routing Service

答案 6 :(得分:1)

您可以直接使用新的Google Directions API,而无需使用任何JavaScript。 http://code.google.com/apis/maps/documentation/directions/