示例中心
功能在线体验
控制台

高德 开发 地图 JS API 开发指南 获取地图数据 出行路线规划

更新时间:2017年05月23日

亲手试一试

AMap.Transfer,AMap.Walking,AMap.Driving,AMap.Riding分别提供公交换乘,步行,驾车,骑行的路径规划服务。输入起点、终点信息,返回相关的路径规划信息,包含站点、路径信息。三个插件都内置了默认皮肤,用户可以使用默认皮肤,也可以自己解析返回结果,自己生成操作界面和地图展示界面

插件引入与对象创建

在使用插件之前,需要使用AMap.service方法加载插件,然后在回调函数中可以进行服务的设定和查询:

AMap.service('AMap.Transfer',function(){//回调函数
    //实例化Transfer
    transfer= new AMap.Transfer({city: '北京市'});
    //TODO: 使用transfer对象调用公交换乘相关的功能
})
AMap.service('AMap.Walking',function(){//回调函数
    //实例化Walking
    walking= new AMap.Walking({city: '北京市'});
    //TODO: 使用walking对象调用步行路径规划相关的功能
})
AMap.service('AMap.Driving',function(){//回调函数
    //实例化Driving
    driving= new AMap.Driving({city: '北京市'});
    //TODO: 使用driving对象调用驾车路径规划相关的功能
})

构造函数主要参数详情

参数名称

类型

说明

city

String

公交换乘的城市,支持城市名称、城市区号、电话区号,此项为必填

cityd

String

终点城市,跨城公交路径规划时为必填参数

map

Map

指定地图对象,设置此参数后,路线规划结果将自动绘制在地图中。可选值

panel

String

用于显示路线指引信息的Div容器的id或Div元素,提供此参数后,路线指引信息将在此容器中进行展示。可选值

路径规划插件的使用方式

这三个插件以及关键字查询插件(AMap.PlaceSearch)、云图插件(AMap.CloudDataSearch)都有两种使用方式:

第一种,在构造函数里传入map或panel参数,或两者都传入。map为AMap.Map实例,panel为div元素或其id号。一旦传入,Javasctipt API会自动为用户生成交互面板和地图展示。用户自己控制div的显示位置及大小,api生成的交互面板和地图展示的皮肤格调可以通过修改样式来实现,样式名可以通过浏览器的调试工具查看。实际上,面板的生成及地图展示是用独立的渲染插件实现的,用户可以把渲染插件下载下来任意修改默认皮肤的样式及结构。代码示例:

var trans;
transOptions = {
    map: map,
    panel: "result1",
    city: '北京市',                            //公交城市
    policy: AMap.TransferPolicy.LEAST_TIME //乘车策略
};
//构造公交换乘类
trans = new AMap.Transfer(transOptions);
//根据起、终点坐标查询公交换乘路线
trans.search([116.379028, 39.865042], [116.427281, 39.903719]);

第二种,直接使用服务返回的数据,构造的option中不写map和panel属性,在search方法中传入回调函数,如:

var trans;
transOptions = {
    city: '北京市',                         //公交城市
    policy: AMap.TransferPolicy.LEAST_TIME //乘车策略
};
//构造公交换乘类
trans = new AMap.Transfer(transOptions);
//根据起、终点坐标查询公交换乘路线
trans.search([116.379028, 39.865042], [116.427281, 39.903719], function(status, result) {
   //TODO:开发者使用result自己创建交互面板和地图展示
});

场景一、公交路线规划

在城市生活中,有好多上班族坐公交车上班,规划一条最佳路线无疑会省很多时间:

查询参数设定

公交路线规划需要指定city和cityd参数(到达城市),当同城规划的时候cityd参数省略即可,我们设定在北京,以最短时间的策略进行路线规划:

var transOptions = {
    map: map,
    panel: "result1",
    city: '北京市',     //城市
    //cityd:'北京市',   //跨城市规划的到达城市
    policy: AMap.TransferPolicy.LEAST_TIME //乘车策略
};
//构造公交换乘类
trans = new AMap.Transfer(transOptions);

调用search方法

要实现上述查询功能,在查询时,需要传入出发点和到达点,出发点和到达点支持地点名称,也支持精确的经纬度。两者的传递方法略有不同,下面分别举例说明,如果使用了map和panel属性,则不需要自己生成界面和结果list,callback函数可以省略。

//传经纬度
transfer.search([116.379028, 39.865042], [116.427281, 39.903719], function(status, result) {
     //TODO 解析返回结果,自己生成操作界面和地图展示界面
 });
//传名称
transfer.search([{keyword:'北京市地震局(公交站)'},{keyword:'望京西园4区'}], function(status, result){
     //TODO 解析返回结果,自己生成操作界面和地图展示界面
});   

回调函数返回查询结果的状态status和查询结果result。当status为complete的时候表示查询到有效结果。

名称

类型

说明

status

String

结果状态码,“complete”时说明得到有效查询结果

result

Object

当status为complete时,result为TransferResult;

当status为error时,result为错误信息info;

当status为no_data时,代表检索返回0结果。

字段名

类型

说明

info

String

成功状态说明

origin

LngLat

公交换乘起点坐标

destination

LngLat

公交换乘终点坐标

start

Poi

公交换乘起点

end

Poi

公交换乘终点

taxi_cost

Number

出租车费用,单位:元

plans

Array.<TransferPlan>

换乘方案列表

场景二、步行路线规划

距离较短的时候,我们可以使用步行路线规划

查询参数设定

MWalk = new AMap.Walking({
    map: map,
    panel: "result"
}); 

search调用

要实现上述查询功能,在查询时,传入出发点和到达点。出发点和到达点支持地点名称,也支持精确的经纬度。如果使用了map和panel属性,则不需要自己生成界面和结果list,下面代码的回调函数可以省略。

//传经纬度
walking.search([116.379028, 39.865042], [116.427281, 39.903719], function(status, result) {
    //TODO 解析返回结果,自己生成操作界面和地图展示界面
});
       //传名称、城市信息
walking.search([{keyword:'北京市地震局(公交站)',city:'北京'},{keyword:'望京西园4区',city:'北京'}], function(status, result){
    //TODO 解析返回结果,自己生成操作界面和地图展示界面
});   

回调函数返回查询结果的状态status和查询结果result。当status为complete的时候表示查询到有效结果。

名称

类型

说明

status

String

结果状态码,“complete”时说明得到有效查询结果

result

Object

当status为complete时,result为WalkingResult;

当status为error时,result为错误信息info;

当status为no_data时,代表检索返回0结果。

字段名

类型

说明

info

String

成功状态说明

origin

LngLat

步行导航起点坐标

destination

LngLat

步行导航终点坐标

start

Poi

步行导航起点

end

Poi

步行导航终点

count

Number

步行导航路段数目

routes

Array.<WalkRoute>

步行规划路线列表

场景三、驾车路线规划

对于驾车出行的用户,我们可以提供驾车路线规划。自驾游近年来越来越流行,让我们规划一个从北京到壶口瀑布的驾车旅程吧:

查询参数设定

var driving= new AMap.Driving({
    map: map,
    panel: "panel"
}); 

search调用

要实现上述查询功能,在查询之前,需要设置出发点和到达点。出发点和到达点支持地点名称,也支持精确的经纬度。两者的传递方法略有不同,下面分别举例说明。

//传经纬度
driving.search([116.379028, 39.865042], [116.427281, 39.903719], function(status, result) {
     //TODO 解析返回结果,自己生成操作界面和地图展示界面
});

//传名称
 driving.search([{keyword:'方恒国际',city:'北京'},{keyword:'壶口瀑布'}], function(status, result){
    //TODO 解析返回结果,自己生成操作界面和地图展示界面
});   

回调函数返回查询结果的状态status和查询结果result。当status为complete的时候表示查询到有效结果。


类型

说明

status

String

结果状态码,“complete”时说明得到有效查询结果

result

Object

当status为complete时,result为DrivingResult;

当status为error时,result为错误信息info;

当status为no_data时,代表检索返回0结果。

DrivingResult对象说明

字段名

类型

说明

info

String

成功状态说明

origin

LngLat

驾车规划起点坐标

destination

LngLat

驾车规划终点坐标

start

Poi

驾车规划起点

waypoints

Poi

驾车规划途经点

end

Poi

驾车规划终点

taxi_cost

Number

打车费用,仅extensions为“all”时返回单位:元

routes

Array.<DrivingRoute>

驾车规划路线列表


场景四、骑行路线规划

对于热爱骑行的用户,我们提供了骑行路线规划。一起来规划一段骑行旅程吧。

查询参数设定

var riding= new AMap.Riding({
    map: map,
    panel: "panel"
}); 

Search调用

要实现上述查询功能,在查询之前,需要设置出发点和到达点。出发点和到达点支持地点名称,也支持精确的经纬度。两者的传递方法略有不同,下面分别举例说明。

//传经纬度
riding.search([116.379028, 39.865042], [116.427281, 39.903719], function(status, result) {
     //TODO 解析返回结果,自己生成操作界面和地图展示界面
});

//传名称
 riding.search([{keyword:'方恒国际',city:'北京'},{keyword:'壶口瀑布'}], function(status, result){
    //TODO 解析返回结果,自己生成操作界面和地图展示界面
});   

回调函数返回查询结果的状态status和查询结果result。当status为complete的时候表示查询到有效结果。



类型

说明

status

String

结果状态码,“complete”时说明得到有效查询结果

result

Object

当status为complete时,result为RidingResult;

当status为error时,result为错误信息info;

当status为no_data时,代表检索返回0结果。

RidingResult对象说明

属性

类型

说明

info

String

成功状态说明

origin

LngLat

骑行导航起点坐标

destination

LngLat

骑行导航终点坐标

start

Poi

骑行导航起点

end

Poi

骑行导航终点

count

Number

骑行导航路段数目

routes

Array.<RideRoute>

骑行规划路线列表



移动端
示例中心
功能
在线体验
常见问题