首页 > 学院 > 开发设计 > 正文

关于基础百度地图和地图导航的bug问题

2019-11-08 00:26:05
字体:
来源:转载
供稿:网友

这个情况出现在项目开发中的bug,就是百度地图开发中的基础地图和地图导航,在正常情况下,基础地图应该在地图导航之前(因为百度基础地图和导航是分开的),先说一下自己的bug问题,因为在项目中有不同入口可以进入导航那个模块,所以也就出现可能,用户在没有使用基础地图之前就导航,会崩溃,所以为了避免这个问题的出现,最好在app开启的时候就先拿到BaiduMap对象,百度会自动创建对象,之后就不用担心基础地图未创建就进行导航了。地图导航那个界面就官网上有,直接复制就可以使用,只要传入起点和终点坐标就可以了。下面是导航界面的完成代码,原封不动,配置好ak和拿到tts白名单之后,放好架包和so文件,就能正常导航了

public class BNDemoGuideActivity extends Activity {   PRivate final String TAG = BNDemoGuideActivity.class.getName();   private BNRoutePlanNode mBNRoutePlanNode = null;   private BaiduNaviCommonModule mBaiduNaviCommonModule = null;   /*     * 对于导航模块有两种方式来实现发起导航。 1:使用通用接口来实现 2:使用传统接口来实现     *     */   // 是否使用通用接口   private boolean useCommonInterface = true;   @Override   protected void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      createHandler();      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {      }      View view = null;      if (useCommonInterface) {         //使用通用接口         mBaiduNaviCommonModule = NaviModuleFactory.getNaviModuleManager().getNaviCommonModule(               NaviModuleImpl.BNaviCommonModuleConstants.ROUTE_GUIDE_MODULE, this,               BNaviBaseCallbackModel.BNaviBaseCallbackConstants.CALLBACK_ROUTEGUIDE_TYPE, mOnNavigationListener);         if(mBaiduNaviCommonModule != null) {            mBaiduNaviCommonModule.onCreate();            view = mBaiduNaviCommonModule.getView();         }      } else {         //使用传统接口         view = BNRouteGuideManager.getInstance().onCreate(this,mOnNavigationListener);      }      if (view != null) {         setContentView(view);      }      Intent intent = getIntent();      if (intent != null) {         Bundle bundle = intent.getExtras();         if (bundle != null) {            mBNRoutePlanNode = (BNRoutePlanNode) bundle.getSerializable(ParkInformationActivity.ROUTE_PLAN_NODE);         }      }      //显示自定义图标      if (hd != null) {         hd.sendEmptyMessageAtTime(MSG_SHOW, 5000);      }   }   @Override   protected void onResume() {      super.onResume();      if(useCommonInterface) {         if(mBaiduNaviCommonModule != null) {            mBaiduNaviCommonModule.onResume();         }      } else {         BNRouteGuideManager.getInstance().onResume();      }   }   protected void onPause() {      super.onPause();      if(useCommonInterface) {         if(mBaiduNaviCommonModule != null) {            mBaiduNaviCommonModule.onPause();         }      } else {         BNRouteGuideManager.getInstance().onPause();      }   };   @Override   protected void onDestroy() {      super.onDestroy();      if(useCommonInterface) {         if(mBaiduNaviCommonModule != null) {            mBaiduNaviCommonModule.onDestroy();         }      } else {         BNRouteGuideManager.getInstance().onDestroy();      }   }   @Override   protected void onStop() {      super.onStop();      if(useCommonInterface) {         if(mBaiduNaviCommonModule != null) {            mBaiduNaviCommonModule.onStop();         }      } else {         BNRouteGuideManager.getInstance().onStop();      }   }   @Override   public void onBackPressed() {      if(useCommonInterface) {         if(mBaiduNaviCommonModule != null) {            mBaiduNaviCommonModule.onBackPressed(false);         }      } else {         BNRouteGuideManager.getInstance().onBackPressed(false);      }   }   public void onConfigurationChanged(android.content.res.Configuration newConfig) {      super.onConfigurationChanged(newConfig);      if(useCommonInterface) {         if(mBaiduNaviCommonModule != null) {            mBaiduNaviCommonModule.onConfigurationChanged(newConfig);         }      } else {         BNRouteGuideManager.getInstance().onConfigurationChanged(newConfig);      }   };   @Override   public boolean onKeyDown(int keyCode, android.view.KeyEvent event) {      if(useCommonInterface) {         if(mBaiduNaviCommonModule != null) {            Bundle mBundle = new Bundle();            mBundle.putInt(RouteGuideModuleConstants.KEY_TYPE_KEYCODE, keyCode);            mBundle.putParcelable(RouteGuideModuleConstants.KEY_TYPE_EVENT, event);            mBaiduNaviCommonModule.setModuleParams(RouteGuideModuleConstants.METHOD_TYPE_ON_KEY_DOWN, mBundle);            try {               Boolean ret = (Boolean)mBundle.get(RET_COMMON_MODULE);               if(ret) {                  return true;               }            }catch(Exception e){               e.printStackTrace();            }         }      }      return super.onKeyDown(keyCode, event);   }   @Override   protected void onStart() {      super.onStart();      // TODO Auto-generated method stub      if(useCommonInterface) {         if(mBaiduNaviCommonModule != null) {            mBaiduNaviCommonModule.onStart();         }      } else {         BNRouteGuideManager.getInstance().onStart();      }   }   private void addCustomizedLayerItems() {      List<CustomizedLayerItem> items = new ArrayList<CustomizedLayerItem>();      CustomizedLayerItem item1 = null;      if (mBNRoutePlanNode != null) {         item1 = new CustomizedLayerItem(mBNRoutePlanNode.getLongitude(), mBNRoutePlanNode.getLatitude(),               mBNRoutePlanNode.getCoordinateType(), getResources().getDrawable(R.drawable.app_logo),               CustomizedLayerItem.ALIGN_CENTER);         items.add(item1);         BNRouteGuideManager.getInstance().setCustomizedLayerItems(items);      }      BNRouteGuideManager.getInstance().showCustomizedLayer(true);   }   private static final int MSG_SHOW = 1;   private static final int MSG_HIDE = 2;   private static final int MSG_RESET_NODE = 3;   private Handler hd = null;   private void createHandler() {      if (hd == null) {         hd = new Handler(getMainLooper()) {            public void handleMessage(android.os.Message msg) {               if (msg.what == MSG_SHOW) {                  addCustomizedLayerItems();               } else if (msg.what == MSG_HIDE) {                  BNRouteGuideManager.getInstance().showCustomizedLayer(false);               } else if (msg.what == MSG_RESET_NODE) {                  BNRouteGuideManager.getInstance().resetEndNodeInNavi(                        new BNRoutePlanNode(116.21142, 40.85087, "百度大厦11", null, CoordinateType.GCJ02));               }            };         };      }   }   private OnNavigationListener mOnNavigationListener = new OnNavigationListener() {      @Override      public void onNaviGuideEnd() {         //退出导航         finish();      }      @Override      public void notifyOtherAction(int actionType, int arg1, int arg2, Object obj) {         if (actionType == 0) {            //导航到达目的地 自动退出            Log.i(TAG, "notifyOtherAction actionType = " + actionType + ",导航到达目的地!");         }         Log.i(TAG, "actionType:" + actionType + "arg1:" + arg1 + "arg2:" + arg2 + "obj:" + obj.toString());      }   };   private final static String RET_COMMON_MODULE = "module.ret";   private interface RouteGuideModuleConstants {      final static int METHOD_TYPE_ON_KEY_DOWN = 0x01;      final static String KEY_TYPE_KEYCODE = "keyCode";      final static String KEY_TYPE_EVENT = "event";   }
}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表