是否有一项服务可以让我在两个地址之间行驶距离?显然Google Maps API要求您显示我不想做的地图(在该特定页面上),并且我想在用户提交表单后将数据保存到我的数据库中,而不是而不是等待JS做这件事。
如果相关,这将进入Django应用程序。我发现CloudMade提供了一个Python API,这很不错,除了它们最新的dev版本中有一个bug(不能使用API对象),但更重要的是,它对加拿大的支持很糟糕(不能'找到周围任何一个主要城市的路线!)。
答案 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)
这是我的解决方案:
打开命令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
将所有目的地的上述命令保存到批处理或sh文件中。
答案 4 :(得分:2)
那里有免费服务,但数据质量在某些地区可能有问题/不存在。请注意数据上的许可证,存储在您自己的数据库中可能是违规行为。
答案 5 :(得分:2)
看看Navteq。大约5年前,我用他们的服务开发了一个行车路线应用程序,并取得了很好的效果。不过最近不能说话。我认为最好的网址是Navteq Routing Service
答案 6 :(得分:1)
您可以直接使用新的Google Directions API,而无需使用任何JavaScript。 http://code.google.com/apis/maps/documentation/directions/