关于Android高德地图路线导航的学习

本文介绍了在Android中使用高德地图导航SDK遇到的问题,包括地图与导航SDK的冲突,解决控件不兼容的方法,以及如何处理所需权限。内容涉及APP内嵌导航和吊起高德APP导航的实现,并详细讲解了模拟导航的过程,如设置起点和终点坐标,以及不同类型的算路方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先是demo6.3.0
导航SDK和地图SDK貌似是冲突的。我想既然导航了肯定会规划线路所以舍弃纯路线规划用导航试试。
删除地图SDK的3D包后地图控件变成一片黑,经过思考原因应该是地图SDK的控件是com.amap.api.maps.MapView 而导航SDK的控件是com.amap.api.navi.AMapNaviView 所以不兼容。另外他们需要的权限也不同,需要仔细对待(特别是os包不一样)。

1.APP内嵌导航
2.吊起高德APP导航
模拟导航:
定义起点坐标,定义终点坐标,定义起点坐标集合,定义终点坐标集合。

//算路终点坐标
protected NaviLatLng mEndLatlng = new NaviLatLng(22.652, 113.966);
//算路起点坐标
protected NaviLatLng mStartLatlng = new NaviLatLng(22.540332, 113.939961);
//存储算路起点的列表
protected final List<NaviLatLng> sList = new ArrayList<NaviLatLng>();
//存储算路终点的列表
protected final List<NaviLatLng> eList = new ArrayList<NaviLatLng>();

//实现AMapNaviView生命周期
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //获取AMapNavi实例
    mAMapNavi = AMapNavi.getInstance(getApplicationContext());
    //添加监听
    mAMapNavi.addAMapNaviListener(this);

    mAMapNaviView = (AMapNaviView) findViewById(R.id.navi_view);
    mAMapNaviView.setAMapNaviViewListener(this);

    //设置模拟导航的行车速度
    mAMapNavi.setEmulatorNaviSpeed(75);
   
    sList.add(mStartLatlng);
    eList.add(mEndLatlng);
}

@Override
protected void onResume() {
    super.onResume();
    mAMapNaviView.onResume();
}

@Override
protected void onPause() {
    super.onPause();
    mAMapNaviView.onPause();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    mAMapNaviView.onDestroy();
}

//导航初始化成功,进行路径规划
@Override
public void onInitNaviSuccess() {
	/**
	 * 方法: int strategy=mAMapNavi.strategyConvert(congestion, avoidhightspeed, cost, hightspeed, multipleroute); 参数:
	 *
	 * @congestion 躲避拥堵
	 * @avoidhightspeed 不走高速
	 * @cost 避免收费
	 * @hightspeed 高速优先
	 * @multipleroute 多路径
	 *
	 *  说明: 以上参数都是boolean类型,其中multipleroute参数表示是否多条路线,如果为true则此策略会算出多条路线。
	 *  注意: 不走高速与高速优先不能同时为true 高速优先与避免收费不能同时为true
	 */
	int strategy = 0;
	try {
		//再次强调,最后一个参数为true时代表多路径,否则代表单路径
		strategy = mAMapNavi.strategyConvert(true, false, false, false, false);
	} catch (Exception e) {
		e.printStackTrace();
	}
        // 驾车算路
	mAMapNavi.calculateDriveRoute(sList, eList, mWayPointList, strategy);
}

//算路成功回调,开始导航
@Override
public void onCalculateRouteSuccess() {
	mAMapNavi.startNavi(NaviType.EMULATOR);
}

先看界面
导航组件:
起终点算路
无起点算路
途径点算路
组件直接导航
起始点算路(白色主题)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值