目录

 

前言

原理

示例代码

1.百度地图

2.高德地图


前言

最近由于业务需求需要拉起百度地图和高德地图进行导航,

原理

百度和高德都给开发者提供了接口,开发者只需要调用接口传递起始坐标就可以了。

示例代码

1.百度地图

效果图:

Android开发跳转到高德导航 android调用高德地图接口_Android开发跳转到高德导航

代码:

try {
	LatLng startLatLng = new LatLng(39.940387, 116.29446);
	LatLng endLatLng = new LatLng(39.87397, 116.529025);
	String uri = String.format("baidumap://map/direction?origin=%s,%s&destination=" +
					"%s,%s&mode=driving&src=com.34xian.demo", startLatLng.latitude, startLatLng.longitude,
			endLatLng.latitude, endLatLng.longitude);
	Intent intent = new Intent();
	intent.setData(Uri.parse(uri));
	startActivity(intent);
}
catch (ActivityNotFoundException e) {
	ToastUtil.showShort(this, "请安装百度地图");
}

注:代码坐标与效果图坐标不同(都是随机拾取的)

参数说明:

参数名称

描述

是否必选

格式(示例)

origin

起点名称或经纬度,或者可同时提供名称和经纬度,此时经纬度优先级高,将作为导航依据,名称只负责展示。如果没有origin的情况下,会使用用户定位的坐标点作为起点

origin和destination二者至少一个有值(默认值是当前定位地址)

latlng:39.98871,116.43234 (注意:坐标先纬度,后经度)

名称和经纬度:name:天安门|latlng:39.98871,116.43234|addr:北京市东城区东长安街(注意:坐标先纬度,后经度)

建筑ID和楼层ID: name:天安门|latlng:39.98871,116.43234|building:10041552286161815796|floor:F1(注意:建筑ID和楼层ID必须同时提供,用于是内步行路线规划)

注意:仅有名称的情况下,请不要带“name:”,只需要origin=“起点名称”

destination

终点名称或经纬度,或者可同时提供名称和经纬度,此时经纬度优先级高,将作为导航依据,名称只负责展示。

同上

latlng:39.98871,116.43234 (注意:坐标先纬度,后经度)

名称和经纬度:name:天安门|latlng:39.98871,116.43234|addr:北京市东城区东长安街(注意:坐标先纬度,后经度)

建筑ID和楼层ID: name:天安门|latlng:39.98871,116.43234|building:10041552286161815796|floor:F1(注意:建筑ID和楼层ID必须同时提供,用于是内步行路线规划)

注意:仅有名称的情况下,请不要带“name:”,只需要destination=“终点名称”

mode

导航模式,

可选transit(公交)、

driving(驾车)、

walking(步行)和riding(骑行)

默认:driving

可选

 

region

城市名或县名

可选

 

origin_region

起点所在城市或县

可选

 

destination_region

终点所在城市或县

可选

 

sy

公交检索策略,只针对mode字段填写transit情况下有效,值为数字。

0:推荐路线

2:少换乘

3:少步行

4:不坐地铁

5:时间短

6:地铁优先

可选

 

index

公交结果结果项,只针对公交检索,值为数字,从0开始

可选

 

target

0 图区,1 详情,只针对公交检索有效

可选

默认0

car_type

驾车路线规划类型

可选

BLK:躲避拥堵(自驾)

TIME:高速优先(自驾)

DIS:不走高速(自驾)

FEE:少收费(自驾)

DEFAULT: 默认偏好; 默认使用地图中已保存的路线偏好(缺省值)。

除缺省值外,若用户已勾选车牌限行,其他类型都会默认增加车牌限行的偏好。

viaPoints

途经点参数,内容为json格式,需要把内容encode后拼接到url中。

未编码的参数内容示例如下,其中name为名称,lat为纬度,lng为经度

{
"viaPoints": [
{
"name": "北京西站",
"lat": 39.902463,
"lng": 116.327737
},
{
"name": "北京动物园",
"lat": 39.945136,
"lng": 116.346983
},
{
"name": "清华大学",
"lat": 40.011006,
"lng": 116.338897
}
]
}

可选

10.2新增

src

统计来源

必选

参数格式为:andr.companyName.appName

不传此参数,不保证服务

注意:
1、direction?region=北京&origin=39.98871,116.43234&destination=40.055878,116.307854mode=transit&index=0&target=1 index=0&target=1 加了这两个,进入某条线路的详情或图区,现在用于到站提醒调起特定线路。已经有index的情况下,target不填就是默认0;
2、仅仅发起检索,跳到搜索结果页, index, target则不是必须的;

3、带途经点的示例如下:[baidumap://map/direction?mode=driving&destination=上地&origin=西二旗&src=push&viaPoints={"viaPoints":[{"name":"北京西站","lat":39.902463,"lng":116.327737}]} baidumap://map/direction?mode=driving&destination=上地&origin=西二旗&src=push&viaPoints=%7B%22viaPoints%22%3A%5B%7B%22name%22%3A%22%E5%8C%97%E4%BA%AC%E8%A5%BF%E7%AB%99%22%2C%22lat%22%3A39.902463%2C%22lng%22%3A116.327737%7D%5D%7D]

2.高德地图

效果图:

Android开发跳转到高德导航 android调用高德地图接口_Android开发跳转到高德导航_02

 

代码:

try {
	double gdLatitude = 39.92848272
	double gdLongitude = 116.39560823
	String uri = String.format("amapuri://route/plan/?dlat=%s&dlon=%s&dname=B&dev=0&t=0",
			gdLatitude, gdLongitude);
	Intent intent = new Intent();
	intent.setAction("android.intent.action.VIEW");
	intent.addCategory("android.intent.category.DEFAULT");
	intent.setData(Uri.parse(uri));
	intent.setPackage("com.autonavi.minimap");
	startActivity(intent);
}
catch (ActivityNotFoundException e) {
	ToastUtil.showShort(this, "请安装高德地图");
}

参数说明:

参数

说明

是否必填

route

服务类型

sourceApplication

第三方调用应用名称。如 amap

sid

起点的POIID

slat

起点纬度。如果不填写此参数则自动将用户当前位置设为起点纬度。

slon

起点经度。如果不填写此参数则自动将用户当前位置设为起点经度。 

sname

起点名称

did

终点的POIID

dlat

终点纬度

dlon

终点经度

dname

终点名称

dev

起终点是否偏移(0:lat 和 lon 是已经加密后的,不需要国测加密; 1:需要国测加密)

m

驾车方式 =0(速度快)=1(费用少) =2(路程短)=3 不走高速 =4(躲避拥堵)=5(不走高速且避免收费) =6(不走高速且躲避拥堵) =7(躲避收费和拥堵) =8(不走高速躲避收费和拥堵)。 公交 =0(速度快)=1(费用少) =2(换乘较少)=3(步行少)=4(舒适)=5(不乘地铁)

由于与用户本地设置冲突,Android平台7.5.9版本起不支持该参数,偏好设置将以用户本地设置为准

t

t = 0(驾车)= 1(公交)= 2(步行)= 3(骑行)= 4(火车)= 5(长途客车)

 (骑行仅在V7.8.8以上版本支持) 

rideType

仅当 t = 3 时该参数生效。rideType = elebike    电动车,rideType = bike/为空 自行车

(电动车规划仅在V8.65.0及以上版本支持)

盛京三四线