Android 调起百度地图和高德地图

目录

 

前言

原理

示例代码

1.百度地图

2.高德地图


前言

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

原理

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

示例代码

1.百度地图

效果图:

百度地图

代码:

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开始可选 
target0 图区,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.高德地图

效果图:

高德地图

 

代码:

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及以上版本支持)

盛京三四线

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值