路径规划
DaxiMap Android SDK支持根据起点和终点坐标规划路线功能。
初始化路径分析对象#
初始化导航模块。示例代码如下:
DXNavi mNavi = DXNavi.getInstance(this);
//在地图加载成功的回调中加载
mNavi.addNaviListener(new DXNaviListener(){
public void onInitNaviFailure(){
}
void onInitNaviSuccess(){
}
void onEndEmulatorNavi(){
}
void onArriveDestination(){
}
void onGetNavigationText(int var1, String var2){
}
void onArrivedWayPoint(int var1){
}
void onReCalculateRouteForYaw(){
}
void onCalculateRouteSuccess(DXCalcRouteResult routeResult){
}
void onCalculateRouteFailure(DXCalcRouteResult routeResult){
}
void onNaviInfoUpdate(DXNaviInfo var1){
}
});
通过Layout初始化导航地图对象#
在layout文件中添加一下代码
<com.indoor.navi.api.DXNaviView
android:id="@+id/navi_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
在Activity的onCreate中通过以下代码获取导航地图对象
DXNaviView mNaviView = null;
protected void onCreate(Bundle savedInstanceState) {
//........
//其他初始化代码
mNaviView = (DXNaviView)findViewById(R.id.navi_view);
mNaviView.setNaviViewListener(new DXNaviViewListener() {
@Override
public void onNaviViewInitStart() {
// 当地图开始初始化时调用
}
@Override
public void onNaviViewLoaded() {
// 当地图加载成功时调用
}
});
DXNaviViewOptions options = new DXNaviViewOptions();
mNaviView.init(options);
}
通过代码初始化导航地图对象#
layout文件内容如下
<FrameLayout
android:id="@+id/parent_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" />
在Activity的onCreate中通过以下代码创建导航地图对象
DXNaviView mNaviView = null;
protected void onCreate(Bundle savedInstanceState) {
//........
//其他初始化代码
FrameLayout parentLayout = (FrameLayout)findViewById(R.id.parent_layout);
mNaviView = new DXNaviView(this);
parentLayout.addView(mNaviView);
mNaviView.setNaviViewListener(new DXNaviViewListener() {
@Override
public void onNaviViewInitStart() {
// 当地图开始初始化时调用
}
@Override
public void onNaviViewLoaded() {
// 当地图加载成功时调用
}
});
DXNaviViewOptions options = new DXNaviViewOptions();
mNaviView.init(options);
}
使用已经创建的MapViewFragment作为导航地图#
//获取MapViewFragment
DXMapViewFragment mMapViewFragment = (DXMapViewFragment) (this.getSupportFragmentManager().findFragmentById(R.id.mapViewFragment));
DXNavi mNavi = DXNavi.getInstance(this);
mNavi.setMapViewFragment(mMapViewFragment)
路径规划#
根据设置的起、终点和起、终点楼层进行路径规划。
DXNaviOptions naviOptions = new DXNaviOptions();
naviOptions.setTripMode(DXTripModeType.TripModeTypeSubway);
naviOptions.setStartLatLngFlrBid(new DXLatLngFlrBid(39.969832, 116.267133));
naviOptions.setEndLatLngFlrBid(new DXLatLngFlrBid(39.948582, 116.366439));
mNavi.calculateRouteAsyn(naviOptions);
处理结果#
当路径规划成功后, 会回调 DXNaviListener 的 onCalculateRouteSuccess 方法, 在该回调函数中,可以获取路线对象,进行规划路线的显示:
void onCalculateRouteSuccess(DXCalcRouteResult routeResult){
// 获取路线数据对象
List<DXNaviPath.DXRoutePath> paths = routeResult.getPaths();
// 绘制显示路径
// ...
}
也可以直接开启导航:
void onCalculateRouteSuccess(DXCalcRouteResult routeResult){
// 开启导航
mNavi.startNavi(DXNaviType.Navi);
}