版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
}
先看界面
导航组件:
起终点算路
无起点算路
途径点算路
组件直接导航
起始点算路(白色主题)