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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34781711/article/details/82732722

首先是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);
}

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

猜你喜欢

转载自blog.csdn.net/qq_34781711/article/details/82732722