为了账号安全,请及时绑定邮箱和手机立即绑定

实现不了导航

首先,我不长按任何地方,直接按模拟导航,都不会打印出长按地图设置目标地点这句话

然后设置了目标点。点开始导航,没有任何反应

正在回答

3 回答

没有。。。

0 回复 有任何疑惑可以回复我~

解决了么?源码发一份可好!

0 回复 有任何疑惑可以回复我~


public class MainActivity extends Activity implements View.OnClickListener {
   private TextureMapView mMapView;
   private Button mBtnLocation;
   private Button mBtnMockNav;
   private Button mBtnRealNav;
   private BaiduMap mBaiduMap;
   private String mSdcardPath=null;
   private String authinfo = null;
   private static final String APP_FOLDER_NAME="BNSDKDemo-Imooc-y";
   public static final String ROUTE_PLAN_NODE="routePlanNode";
   //定位相关
   private LocationClient mLocationClient;
   private boolean isFirstLocation=true;
   private LatLng mLastLocationData;
   private LatLng mDestLocationData;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       SDKInitializer.initialize(getApplicationContext());
       setContentView(R.layout.activity_main);
       //定位相关
       initLocation();
       mMapView = (TextureMapView) findViewById(R.id.bmapView);
       mBtnLocation = (Button)findViewById(R.id.id_btn_location);
       mBtnMockNav = (Button) findViewById(R.id.id_btn_mocknav);
       mBtnRealNav = (Button)findViewById(R.id.id_btn_realnav);
       if (initDirs()){
           initNavi();
       }
       //定位按钮
       mBtnLocation.setOnClickListener(this);
       mBtnMockNav.setOnClickListener(this);
       mBtnRealNav.setOnClickListener(this);
       //更新地图的设置
       mBaiduMap=mMapView.getMap();
       MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(18.0f);
       mBaiduMap.setMapStatus(msu);
       //初始化导航相关


       mBaiduMap.setOnMapLongClickListener(new BaiduMap.OnMapLongClickListener() {
           @Override
           public void onMapLongClick(LatLng arg0) {
               Toast.makeText(MainActivity.this,"设置目的地成功",Toast.LENGTH_SHORT).show();
               mDestLocationData =arg0;
               addDestInfoOverlay(arg0);
           }
       });

   }
   private void initNavi() {
       BaiduNaviManager.getInstance().init(this, mSdcardPath, APP_FOLDER_NAME,
               new BaiduNaviManager.NaviInitListener() {
                   @Override
                   public void onAuthResult(int status, String msg) {
                       if (0 == status) {
                           authinfo = "key校验成功!";
                       } else {
                           authinfo = "key校验失败, " + msg;
                       }
                       MainActivity.this.runOnUiThread(new Runnable() {

                           @Override
                           public void run() {
                               Toast.makeText(MainActivity.this, authinfo,
                                       Toast.LENGTH_LONG).show();
                           }
                       });
                   }

                   public void initSuccess() {
                       Toast.makeText(MainActivity.this, "百度导航引擎初始化成功",
                               Toast.LENGTH_SHORT).show();
                   }

                   public void initStart() {
                       Toast.makeText(MainActivity.this, "百度导航引擎初始化开始",
                               Toast.LENGTH_SHORT).show();
                   }

                   public void initFailed() {
                       Toast.makeText(MainActivity.this, "百度导航引擎初始化失败",
                               Toast.LENGTH_SHORT).show();
                   }
               },mTTSCallback);
   }
   private BNOuterTTSPlayerCallback mTTSCallback = new BNOuterTTSPlayerCallback() {

       @Override
       public void stopTTS() {
           // TODO Auto-generated method stub

       }
       @Override
       public void resumeTTS() {
           // TODO Auto-generated method stub

       }
       @Override
       public void releaseTTSPlayer() {
           // TODO Auto-generated method stub

       }
       @Override
       public int playTTSText(String speech, int bPreempt) {
           // TODO Auto-generated method stub
           return 0;
       }
       @Override
       public void phoneHangUp() {
           // TODO Auto-generated method stub

       }
       @Override
       public void phoneCalling() {
           // TODO Auto-generated method stub

       }
       @Override
       public void pauseTTS() {
           // TODO Auto-generated method stub

       }
       @Override
       public void initTTSPlayer() {
           // TODO Auto-generated method stub

       }
       @Override
       public int getTTSState() {
           // TODO Auto-generated method stub
           return 0;
       }
   };
   private boolean initDirs() {
       mSdcardPath = getSdcardDir();
       if ( mSdcardPath == null ) {
           return false;
       }
       File f = new File(mSdcardPath, APP_FOLDER_NAME);
       if ( !f.exists() ) {
           try {
               f.mkdir();
           } catch (Exception e) {
               e.printStackTrace();
               return false;
           }
       }
       return true;
   }
   private String getSdcardDir() {
       if (Environment.getExternalStorageState().equalsIgnoreCase(
               Environment.MEDIA_MOUNTED)) {
           return Environment.getExternalStorageDirectory().toString();
       }
       return null;
   }
   private void addDestInfoOverlay(LatLng destInfo){
       mBaiduMap.clear();
       OverlayOptions options =new MarkerOptions().position(destInfo)
               .icon(BitmapDescriptorFactory.fromResource(R.drawable.myloc9))
               .zIndex(5);
       mBaiduMap.addOverlay(options);
   }
   private void initLocation(){
       //声明LocationClient类
   mLocationClient = new LocationClient(getApplicationContext());
       initLocationOps();
       mLocationClient.registerLocationListener(new BDLocationListener() {
           @Override
           public void onReceiveLocation(BDLocation location) {
               if (location == null || mMapView == null)
                   return;
               //构造定位数据
               MyLocationData locData = new MyLocationData.Builder()
                       .accuracy(location.getRadius())
                       .latitude(location.getLatitude())
                       .longitude(location.getLongitude()).build();
               //设置定位数据
               mBaiduMap.setMyLocationData(locData);
               LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
               mLastLocationData = ll;
               if (isFirstLocation) {
                   isFirstLocation = false;
                   MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
                   mBaiduMap.animateMapStatus(u);
               }
           }
       });
   }
   private void initLocationOps() {
       LocationClientOption option = new LocationClientOption();
       option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
       option.setCoorType("bd09ll");
       int span =1000;
       option.setScanSpan(span);
       option.setIsNeedAddress(true);
       option.setOpenGps(true);
       mLocationClient.setLocOption(option);
   }
   protected void onDestroy() {
       super.onDestroy();
       //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
       mMapView.onDestroy();
   }
   @Override
   protected void onResume() {
       super.onResume();
       //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
       mMapView.onResume();
   }
   @Override
   protected void onStart() {
       super.onStart();
       mBaiduMap.setMyLocationEnabled(true);
       if (!mLocationClient.isStarted()){
           mLocationClient.start();
       }
   }
   @Override
   protected void onStop() {
       super.onStop();
       mBaiduMap.setMyLocationEnabled(false);
       mLocationClient.stop();
   }
   @Override
   protected void onPause() {
       super.onPause();
       //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
       mMapView.onPause();
   }
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
       // Inflate the menu; this adds items to the action bar if it is present.
       getMenuInflater().inflate(R.menu.menu_main, menu);
       return true;
   }
   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
       // Handle action bar item clicks here. The action bar will
       // automatically handle clicks on the Home/Up button, so long
       // as you specify a parent activity in AndroidManifest.xml.
       int id = item.getItemId();

       //noinspection SimplifiableIfStatement
       if (id == R.id.action_settings) {
           return true;
       }
       return super.onOptionsItemSelected(item);
   }
    

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android-百度地图之导航
  • 参与学习       25596    人
  • 解答问题       47    个

百度地图-导航模块快速入门,轻松为应用程序实现导航功能

进入课程

实现不了导航

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号