在安卓百度导航sdk中,怎么获取导航中的路线信息
时间: 2024-02-28 21:54:40 浏览: 29
获取导航中的路线信息,可以通过以下步骤实现:
1. 引入百度导航SDK,并初始化导航相关的类和对象。
2. 在导航开始前,设置导航监听器,通过监听器回调获取导航信息。
3. 在导航回调中,通过获取到的导航信息对象,可以获取到路线信息。
4. 路线信息包括路线方案、路线段、路线节点等,可以根据需要进行解析和使用。
以下是一个示例代码:
```java
// 初始化导航相关的类和对象
BNRoutePlanNode sNode = new BNRoutePlanNode.Builder()
.latitude(startPoint.getLatitude())
.longitude(startPoint.getLongitude())
.name(startPoint.getName())
.description(startPoint.getDescription())
.coordinateType(BNRoutePlanNode.CoordinateType.BD09LL)
.build();
BNRoutePlanNode eNode = new BNRoutePlanNode.Builder()
.latitude(endPoint.getLatitude())
.longitude(endPoint.getLongitude())
.name(endPoint.getName())
.description(endPoint.getDescription())
.coordinateType(BNRoutePlanNode.CoordinateType.BD09LL)
.build();
List<BNRoutePlanNode> list = new ArrayList<>();
list.add(sNode);
list.add(eNode);
BaiduNaviManager.getInstance().launchNavigator(activity, list, 1, true, new DemoRoutePlanListener(sNode));
// 设置导航监听器
private class DemoRoutePlanListener implements BaiduNaviManager.RoutePlanListener {
private BNRoutePlanNode mBNRoutePlanNode = null;
public DemoRoutePlanListener(BNRoutePlanNode node) {
mBNRoutePlanNode = node;
}
@Override
public void onJumpToNavigator() {
Intent intent = new Intent(activity, BaiduNaviActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable(ROUTE_PLAN_NODE, (BNRoutePlanNode) mBNRoutePlanNode);
intent.putExtras(bundle);
activity.startActivity(intent);
}
@Override
public void onRoutePlanFailed() {
Toast.makeText(activity, "算路失败", Toast.LENGTH_SHORT).show();
}
@Override
public void onRoutePlanStart() {
Toast.makeText(activity, "正在算路...", Toast.LENGTH_SHORT).show();
}
@Override
public void onRoutePlanSuccess() {
Toast.makeText(activity, "算路成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onRoutePlanCancel() {
Toast.makeText(activity, "算路取消", Toast.LENGTH_SHORT).show();
}
}
// 导航信息回调
BNaviBaseCallbackModel<BNaviInfo> callback = new BNaviBaseCallbackModel<BNaviInfo>() {
@Override
public void apply(BNaviInfo info) {
// 获取路线信息
List<BNRoutePlanNode> routeNodes = info.getRouteOutline();
for (BNRoutePlanNode node : routeNodes) {
// 解析路线信息
String name = node.getName();
int distance = node.getDistance();
// TODO: 根据需要进行处理
}
}
};
BaiduNaviManager.getInstance().addNaviInfoListener(callback);
```
注意:以上代码仅供参考,具体实现方式可能根据具体项目和需求有所不同。