百度地图Android司乘同显SDK司机端—驾车页

百度地图Android司乘同显SDK司机端—驾车页

驾车页 算路

示例代码:

BNRoutePlanNode sNode = new BNRoutePlanNode.Builder()
            .latitude(40.05087)
            .longitude(116.30142)
            .name("百度大厦")
            .description("百度大厦")
            .coordinateType(CoordinateType.GCJ02)
            .build();
BNRoutePlanNode eNode = new BNRoutePlanNode.Builder()
            .latitude(39.90882)
            .longitude(116.39750)
            .name("北京天安门")
            .description("北京天安门")
            .coordinateType(CoordinateType.GCJ02)
            .build();
List<BNRoutePlanNode> list = new ArrayList<>();
list.add(sNode);
list.add(eNode);
BaiduNaviManagerFactory.getRoutePlanManager().routeplan(list, IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_DEFAULT, null, new Handler(Looper.getMainLooper()) {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_START:
                    Toast.makeText(DemoMainActivity.this.gtApplicationContext(),
                            "算路开始", Toast.LENGTH_SHORT).show();
                    break;
                case IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_SUCCESS:
                   Toast.makeText(DemoMainActivity.this.getApplicationContext(),
                            "算路成功", Toast.LENGTH_SHORT).show();
                    break;
                case IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_FAILED:
                    Toast.makeText(DemoMainActivity.this.getApplicationContext(),
                            "算路失败", Toast.LENGTH_SHORT).show();
                    break;
                default:
                    // nothing
                    break;
            }
        }
});

生命周期

路线规划成功后,就可以使用驾车页,驾车页依赖App的页面生命周期,开发时,只需要将百度导航SDK驾车页生命周期接口挂接到对应页面的生命周期接口即可,App页面既可以是Activity,也可以是Fragment等。生命周期相关方法在BaiduNaviManagerFactory.getRouteResultManager()中:

/**
 * 在Activity的onCreate() 或者  Fragment的onCreateView()中调用
 */
void onCreate(Context context);

/**
 * 在Activity的onResume() 或者 Fragment的onResume() 中调用
 */
void onResume();

/**
 * 在Activity的onPause() 或者 Fragment的onPause() 中调用
 */
void onPause();

/**
 * 在Activity的onDestroy() 或者 Fragment的onDestroy() 中调用
 */
void onDestroy();

调用方法以OnCreate为例:

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// 获取路线规划UI 
View view = BaiduNaviManagerFactory.getRouteResultManager().onCreate(getActivity());
     return view;
}

选路

路线规划成功后通常情况下会出现3条路线,该接口可监听某条路线是否被点击,如果被点击可调用BaiduNaviManagerFactory.getRouteGuideManager().selectRoute(index)高亮并选中该条路线。

/**
 * 路线点击事件监听
 */
void setRouteClickedListener(IRouteClickedListener listener);

/**
 * 路线点击事件
 */
interface IRouteClickedListener {

    /**
     * 点击了第几条
     * @param index
     */
    void routeClicked(int index);
}

全览路线

BaiduNaviManagerFactory.getRouteResultManager().fullView();

开启专业导航

无需重新算路,直接跳转新页面调用专业导航生命周期即可,可参考demo。

// 返回true,代表可以跳转至专业导航
BaiduNaviManagerFactory.getRouteResultManager().startNavi();
}

获取Tab信息、路线详情和限行消息

/**
 * 获取3Tab信息和路线详情
 */
Bundle getRouteInfo();

返回的bundle中数据如下,具体使用方法可以参考demo中DemoRouteResultFragment类。

Bundle bundle = BaiduNaviManagerFactory.getRouteResultManager().getRouteInfo();
if (bundle == null) {
    return;
}
// 3Tab信息
mRoutePlanItems = bundle.getParcelableArrayList(BNaviCommonParams.BNRouteInfoKey.INFO_TAB);
// 每条路线的详细信息
mRouteDetails = bundle.getBundle(BNaviCommonParams.BNRouteInfoKey.INFO_ROUTE_DETAIL);
// 每条路线的坐标点
Bundle pointList = bundle.getBundle(BNaviCommonParams.BNRouteInfoKey.INFO_ROUTE_POINT);
if (pointList != null) {
    ArrayList<BNPoint> bnPoints0 = pointList.getParcelableArrayList("0");
    ArrayList<BNPoint> bnPoints1 = pointList.getParcelableArrayList("1");
    ArrayList<BNPoint> bnPoints2 = pointList.getParcelableArrayList("2");
}

驾车页设置

驾车页设置BaiduNaviManagerFactory.getRouteResultSettingManager()接口如下:

/**
 * 设置全览路线边距
 * @param left
 * @param top
 * @param right
 * @param bottom
 */
void setRouteMargin(int left, int top, int right, int bottom);
🚀 如未找到文章请搜索栏搜素 | Ctrl+D收藏本站 | 联系邮箱:15810050733@qq.com