浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

Android 导航SDK

百度Andriod 导航SDK为Android移动端应用提供了一套简单易用的导航服务接口,适用于Android 2.1及以上版本。专注于为广大开发者提供最好的导航服务,通过使用百度导航SDK,开发者可以轻松为应用程序实现专业、高效、精准的导航功能。

使用百度导航SDK提供的专业导航服务之前,需要先根据起终点等进行路线规划,路线规划成功后,才能正常使用专业导航服务。

路线规划模块提供两种本质上类似的路线规划能力,分别是单独的路线规划和路线规划并通知发起专业导航,两者区分仅仅在于返回消息中的类型,目前建议使用路线规划并通知发起专业导航接口。

路线规划并通知发起专业导航

该功能由接口

BaiduNaviManagerFactory.getRoutePlanManager().routeplanToNavi(nodes, preference, extBundle, outHandler) 提供,outHandler接收路线规划的结果消息。

这个接口返回结果消息多了IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_TO_NAVI 类型,该消息用来通知App发起专业导航,跳转页面等。

单独的路线规划

该功能由接口BaiduNaviManagerFactory.getRoutePlanManager().routeplan(nodes, preference, extBundle, outHandler) 提供,outHandler接收路线规划的结果消息。

路线规划偏好

执行路线规划时,可以通过参数控制偏好策略,定义在IBNRoutePlanManager.RoutePlanPreference接口类,具体如:

androidSDK%2Fnav%2Fimages%2Fpath-nav-1.png

路线规划结果消息类型

消息类型作为常量定义在IBNRoutePlanManager,具体如:

androidSDK%2Fnav%2Fimages%2Fpath-nav-2.png

示例代码
BNRoutePlanNode sNode = new BNRoutePlanNode(116.30142, 40.05087, "百度大厦", "百度大厦", coType);
BNRoutePlanNode eNode = new BNRoutePlanNode(116.39750, 39.90882, "北京天安门", "北京天安门", coType);
switch (coType) {
    case CoordinateType.GCJ02: {
        sNode = new BNRoutePlanNode(116.30142, 40.05087, "百度大厦", "百度大厦", coType);
        eNode = new BNRoutePlanNode(116.39750, 39.90882, "北京天安门", "北京天安门", coType);
        break;
    }
    case CoordinateType.WGS84: {
        sNode = new BNRoutePlanNode(116.300821, 40.050969, "百度大厦", "百度大厦", coType);
        eNode = new BNRoutePlanNode(116.397491, 39.908749, "北京天安门", "北京天安门", coType);
        break;
    }
    case CoordinateType.BD09_MC: {
        sNode = new BNRoutePlanNode(12947471, 4846474, "百度大厦", "百度大厦", coType);
        eNode = new BNRoutePlanNode(12958160, 4825947, "北京天安门", "北京天安门", coType);
        break;
    }
    case CoordinateType.BD09LL: {
        sNode = new BNRoutePlanNode(116.30784537597782, 40.057009624099436, "百度大厦", "百度大厦", coType);
        eNode = new BNRoutePlanNode(116.40386525193937, 39.915160800132085, "北京天安门", "北京天安门", coType);
        break;
    }
    default:
        ;
}

mStartNode = sNode;

if (sNode != null && eNode != null) {
    List<BNRoutePlanNode> list = new ArrayList<BNRoutePlanNode>();
    list.add(sNode);
    list.add(eNode);

    BaiduNaviManagerFactory.getRoutePlanManager().routeplanToNavi(
            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(BNNewIFNormalDemoMainActivity.this, "算路开始", Toast.LENGTH_SHORT)
                                    .show();
                            break;
                        case IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_SUCCESS:
                            Toast.makeText(BNNewIFNormalDemoMainActivity.this, "算路成功", Toast.LENGTH_SHORT)
                                    .show();
                            break;
                        case IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_FAILED:
                            Toast.makeText(BNNewIFNormalDemoMainActivity.this, "算路失败", Toast.LENGTH_SHORT)
                                    .show();
                            break;
                        case IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_TO_NAVI:
                            Toast.makeText(BNNewIFNormalDemoMainActivity.this, "算路成功准备进入导航", Toast.LENGTH_SHORT)
                                    .show();

                            for (Activity ac : activityList) {
                                if (ac.getClass().getName().endsWith("BNNewIFNormalDemoGuideActivity")) {
                                    return;
                                }
                            }
                            Intent intent = new Intent(BNNewIFNormalDemoMainActivity.this,
                                    BNNewIFNormalDemoGuideActivity.class);
                            Bundle bundle = new Bundle();
                            bundle.putSerializable(ROUTE_PLAN_NODE, (BNRoutePlanNode) mStartNode);
                            intent.putExtras(bundle);
                            startActivity(intent);
                            break;
                        default:
                            // nothing
                            break;
                    }
                }
            });
}