Android代理模式封装百度地图路线规划模块

Posted 日月星陈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android代理模式封装百度地图路线规划模块相关的知识,希望对你有一定的参考价值。

百度地图的Demo里有个路线规划的功能,但是,这个功能和Activity耦合性太高,所以需要单独抽离出路径规划功能,进行“解耦”。
注:由于项目原因,本文只针对驾车路线规划进行封装。

首先,定义RoutePlan类,这个类就是路线规划类,既然是路线规划,所以要实现OnGetRoutePlanResultListener接口,路线规划需要的三个参数作为它的成员,即城市city、起点start、终点end。

然后,由于需要搜索,所以对外提供搜索接口:

public void drivingPlan(){}

这个接口中即放基本的搜索:

//路径搜索用到的类
RoutePlanSearch mSearch = null;   
// 初始化搜索模块,注册事件监听
mSearch = RoutePlanSearch.newInstance();
mSearch.setOnGetRoutePlanResultListener(this);
PlanNode stNode = PlanNode.withCityNameAndPlaceName(city, start);
PlanNode enNode = PlanNode.withCityNameAndPlaceName(city, end);
//开始搜索
boolean searchState = mSearch.drivingSearch((new DrivingRoutePlanOption()).from(stNode).to(enNode));

 由于百度地图驾车路线规划成功后会回调onGetDrivingRouteResult方法,同时为了可以解耦,加入RouteResultManage接口,里面就两个方法,一个是规划成功的处理函数void routeResultSuccess(DrivingRouteResult result) ;另一个是规划失败时候的处理函数void routeResultFail()。由于不同的Activity处理方法不同,因此可以定义为借口,为了传入接口,还需要在RoutePlan类中加入成员变量RouteResultManage routeResultManage。
在回调函数onGetDrivingRouteResult中,通过routeResultManage.routeResultSuccess(result)处理。
最后,需要用到路径规划功能的Activity只要实现RouteResultManage这个接口即可。在使用RoutePlan类的时候初始化中的RouteResultManage参数可以把自身传入。
总结,这里面的代理模式中的三个角色分别为:抽象主题角色RouteResultManage,具体主题角色Activity,代理主题角色RoutePlan,其中Activity也是作为Client端。
git地址:https://github.com/chenmingIT/RoutePlan







以上是关于Android代理模式封装百度地图路线规划模块的主要内容,如果未能解决你的问题,请参考以下文章

基于百度地图sdk的地图app开发——路线规划

百度地图_路线规划,起点终点标记弹窗显示信息

如何使用百度地图查询出行路线

百度地图-路径规划

Python调用百度地图API(路线规划POI检索)——第一部分

如何使用百度地图查询出行路线