全部服务产品
开发者频道
服务升级
登录
导航
下载开发文档

导航有2种模式,分别是轻导航和专业导航。

轻导航模式

前台轻导航的实现需要在Activity.onCreate()或者Fragment.onCreateView()中初始化轻导航View,把轻导航View add进入第三方APP页面布局中,还需要在Activity或者Fragment的生命周期调用轻导航的生命周期,相关方法在BaiduNaviManagerFactory.getLightNaviManager()中:

/**
* 获取百度地图轻导航view
*
* @param activity
*
* @return
*/
View onCreate (Activity activity);
/**
* 需要在Activity的onStart() 或者 Fragment的onStart() 中调用
*/
void onStart ();
/**
* 需要在Activity的onResume() 或者 Fragment的onResume() 中调用
*/
void onResume ();
/**
* 需要在Activity的onPause() 或者 Fragment的onPause() 中调用
*/
void onPause ();
/**
* 需要在Activity的onStop() 或者 Fragment的onStop() 中调用
*/
void onStop ();
/**
* 需要在Activity的onDestroy() 或者 Fragment的onDestroy() 中调用
*
* @param isSwitchToNavi 是否准备切换到专业导航模式
*/
void onDestroy ( boolean isSwitchToNavi);

调用方法以OnCreate为例:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
contentView = inflater.inflate(R.layout.onsdk_fragment_light_navi, container, false);
// 获取百度地图轻导航view
View view = BaiduNaviManagerFactory.getLightNaviManager().onCreate(getActivity());
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT);
if (view != null) {
FrameLayout contentContainer = contentView.findViewById(R.id.content_container);
BaiduNaviManagerFactory.getLightNaviSettingManager().setRouteMargin(
100,
ScreenUtil.getInstance().dip2px(280),
100,
ScreenUtil.getInstance().dip2px(80));
if (view.getParent() != null) {
ViewGroup parent = (ViewGroup) view.getParent();
parent.removeView(view);
}
// add 导航view
contentContainer.addView(view, layoutParams);
}
return contentView;
}

更详细的api请参考Demo中的使用。

专业导航模式

专业导航的实现需要在Activity.onCreate()或者Fragment.onCreateView()中初始化专业导航View,把专业导航View add进入第三方APP页面布局中,还需要在Activity或者Fragment的生命周期调用专业导航的生命周期,相关方法在BaiduNaviManagerFactory.getRouteGuideManager()中:

/**
* 获取百度专业导航过程View对象,将其加入应用布局内即可显示导航过程.
*
* @param activity 应用导航过程所属Activity对象
* @param listener 导航过程监听器,主要是监听导航过程中消息分发,比如到达终点、导航结束和更新路名等
* @param callback 添加自定义View到导航中的callback对象
*
* @return
*/
View onCreate(final Activity activity, final OnNavigationListener listener, final NaviAddViewCallback callback);
/**
* 获取百度专业导航过程View对象,将其加入应用布局内即可显示导航过程.
*
* @param activity 应用导航过程所属Activity对象
* @param listener 导航过程监听器,主要是监听导航过程中消息分发,比如到达终点、导航结束和更新路名等
*
* @return
*/
View onCreate(final Activity activity, final OnNavigationListener listener);
/**
* 在 Activity的onStart() 或者 Fragment的onStart() 中调用
*/
void onStart();
/**
* 在Activity的onResume() 或者 Fragment的onResume() 中调用
*/
void onResume();
/**
* 在Activity的onPause() 或者 Fragment的onPause() 中调用
*/
void onPause();
/**
* 在Activity的onStop() 或者 Fragment的onStop() 中调用
*/
void onStop();
/**
* 在Activity的onDestroy() 或者 Fragment的onDestroy() 中调用
*
* @param isSwitchToLightNavi 在退出专业导航后是否切换到轻导航
*/
void onDestroy(boolean isSwitchToLightNavi);

调用方法以OnCreate为例:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.onsdk_activity_professional);
contentContainer = (FrameLayout) findViewById(R.id.view_container);
// 获取百度专业导航过程View对象,将其加入应用布局内即可显示导航过程.
View view = BaiduNaviManagerFactory.getRouteGuideManager().onCreate(this, mOnNavigationListener, null);
if (view != null) {
if (view.getParent() != null) {
ViewGroup parent = (ViewGroup) view.getParent();
parent.removeView(view);
}
contentContainer.addView(view);
}
}

更详细用法可参考Demo中BNOrderNaviFragment类。

横竖屏切换

为了防止在手机横竖屏切换过程中,导航出现布局混乱以及crash等情况,请在页面的onConfigurationChanged生命周期方法内调用专业导航的onConfigurationChanged接口。

@Override
public void onConfigurationChanged(android.content.res.Configuration newConfig) {
super.onConfigurationChanged(newConfig);
BaiduNaviManagerFactory.getRouteGuideManager().onConfigurationChanged(newConfig);
}

上一篇

驾车页

下一篇

导航相关设置

本篇文章对您是否有帮助?