navigation包封装了调启各类第三方导航的api,以dialog的形式供用户选择使用百度、高德,或者其他形式进行导航。(目前只封装了百度和高德)
入口类
我们通过唯一的入口类NavigationHelper来使用navigation包提供的功能。
1.生成NavigationHelper的实例,在其构造函数中传入Context对象
mNavigationHelper = new NavigationHelper(this);
2.传入LatLng对象,设置目标位置的经纬度信息
mNavigationHelper.setDestination(mDestination);`
3.显示对话框,供用户选择导航方式
mNavigationHelper.showNaviOptListDialog();
扩展
目前只支持百度和高德导航,如果以后要支持别的导航形式,可以这样扩展(以腾讯地图为例)
1.仿照百度和高德,添加继承NavigationOption的类,比如要支持腾讯地图
class MapTencent extends NavigationOption {
...
}
2.在MapApp中添加新的枚举类型,比如TECENT,GOOGLE
private enum MapApp {
BAIDU, GAODE //, TENCENT
}
3.在工厂类NavigationFactory中添加对应的生成方法
case TENCENT:
return new MapTencent(context);