中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

android開發(fā)中如何實(shí)現(xiàn)一個(gè)定位與目的地導(dǎo)航功能-創(chuàng)新互聯(lián)

本篇文章為大家展示了android開發(fā)中如何實(shí)現(xiàn)一個(gè)定位與目的地導(dǎo)航功能,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、恩陽(yáng)網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁(yè)面制作商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為恩陽(yáng)等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

效果:

android開發(fā)中如何實(shí)現(xiàn)一個(gè)定位與目的地導(dǎo)航功能      android開發(fā)中如何實(shí)現(xiàn)一個(gè)定位與目的地導(dǎo)航功能 

進(jìn)入后首先會(huì)得到當(dāng)前位置,在地圖上顯示出來(lái),在輸入框中輸入目的地后,就會(huì)在地圖上出現(xiàn)最佳線路,我這里設(shè)置的是距離最小的駕車線路,另外還有公交線路、步行線路,在代碼中都有詳細(xì)注釋。另外,在控制臺(tái)還輸出了線路上每一個(gè)節(jié)點(diǎn)的信息以及起始位置和目的地的距離,信息顯示的是在當(dāng)前節(jié)點(diǎn)的導(dǎo)航信息。如下圖:

android開發(fā)中如何實(shí)現(xiàn)一個(gè)定位與目的地導(dǎo)航功能

接下來(lái)就看如何實(shí)現(xiàn)了,首先,注冊(cè)百度開發(fā)者賬號(hào),并進(jìn)入百度地圖API查看相關(guān)資料百度地圖API,然后就是為需要加入地圖的應(yīng)用注冊(cè)APP KEY,注冊(cè)完后,下載百度地圖jar文件,新建工程,并導(dǎo)入即可,下面看實(shí)現(xiàn)具體代碼,在代碼中有詳細(xì)注釋:

public class NavigationDemoActivity extends MapActivity { 
  private String mMapKey = "注冊(cè)自己的key"; 
  private EditText destinationEditText = null; 
  private Button startNaviButton = null; 
  private MapView mapView = null; 
  private BMapManager mMapManager = null; 
  private MyLocationOverlay myLocationOverlay = null; 
  //onResume時(shí)注冊(cè)此listener,onPause時(shí)需要Remove,注意此listener不是Android自帶的,是百度API中的 
  private LocationListener locationListener; 
  private MKSearch searchModel; 
  GeoPoint pt; 

  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.main); 
    destinationEditText = (EditText) this.findViewById(R.id.et_destination); 
    startNaviButton = (Button) this.findViewById(R.id.btn_navi); 

    mMapManager = new BMapManager(getApplication()); 
    mMapManager.init(mMapKey, new MyGeneralListener()); 
    super.initMapActivity(mMapManager); 

    mapView = (MapView) this.findViewById(R.id.bmapsView); 
    //設(shè)置啟用內(nèi)置的縮放控件 
    mapView.setBuiltInZoomControls(true);  
    //設(shè)置在縮放動(dòng)畫過(guò)程中也顯示overlay,默認(rèn)為不繪制 
//    mapView.setDrawOverlayWhenZooming(true); 
    //獲取當(dāng)前位置層 
    myLocationOverlay = new MyLocationOverlay(this, mapView); 
    //將當(dāng)前位置的層添加到地圖底層中 
    mapView.getOverlays().add(myLocationOverlay); 

    // 注冊(cè)定位事件 
    locationListener = new LocationListener(){ 

      @Override 
      public void onLocationChanged(Location location) { 
        if (location != null){ 
          //生成GEO類型坐標(biāo)并在地圖上定位到該坐標(biāo)標(biāo)示的地點(diǎn) 
           pt = new GeoPoint((int)(location.getLatitude()*1e6), 
              (int)(location.getLongitude()*1e6)); 
//         System.out.println("---"+location.getLatitude() +":"+location.getLongitude()); 
          mapView.getController().animateTo(pt); 
        } 
      } 
    }; 

    //初始化搜索模塊 
    searchModel = new MKSearch(); 
    //設(shè)置路線策略為最短距離 
    searchModel.setDrivingPolicy(MKSearch.ECAR_DIS_FIRST); 
    searchModel.init(mMapManager, new MKSearchListener() { 
      //獲取駕車路線回調(diào)方法 
      @Override 
      public void onGetDrivingRouteResult(MKDrivingRouteResult res, int error) { 
        // 錯(cuò)誤號(hào)可參考MKEvent中的定義 
        if (error != 0 || res == null) { 
          Toast.makeText(NavigationDemoActivity.this, "抱歉,未找到結(jié)果", Toast.LENGTH_SHORT).show(); 
          return; 
        } 
        RouteOverlay routeOverlay = new RouteOverlay(NavigationDemoActivity.this, mapView); 

        // 此處僅展示一個(gè)方案作為示例 
        MKRoute route = res.getPlan(0).getRoute(0); 
        int distanceM = route.getDistance(); 
        String distanceKm = String.valueOf(distanceM / 1000) +"."+String.valueOf(distanceM % 1000); 
        System.out.println("距離:"+distanceKm+"公里---節(jié)點(diǎn)數(shù)量:"+route.getNumSteps()); 
        for (int i = 0; i < route.getNumSteps(); i++) { 
          MKStep step = route.getStep(i); 
          System.out.println("節(jié)點(diǎn)信息:"+step.getContent()); 
        } 
        routeOverlay.setData(route); 
        mapView.getOverlays().clear(); 
        mapView.getOverlays().add(routeOverlay); 
        mapView.invalidate(); 
        mapView.getController().animateTo(res.getStart().pt); 
      } 

      //以下兩種方式和上面的駕車方案實(shí)現(xiàn)方法一樣 
      @Override 
      public void onGetWalkingRouteResult(MKWalkingRouteResult res, int error) { 
        //獲取步行路線 
      } 

      @Override 
      public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) { 
        //獲取公交線路 
      } 

      @Override 
      public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) { 
      } 
      @Override 
      public void onGetAddrResult(MKAddrInfo arg0, int arg1) { 
      } 
      @Override 
      public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) { 
      } 
      @Override 
      public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) { 
      } 
    }); 

    startNaviButton.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
        String destination = destinationEditText.getText().toString(); 

        //設(shè)置起始地(當(dāng)前位置) 
        MKPlanNode startNode = new MKPlanNode(); 
        startNode.pt = pt; 
        //設(shè)置目的地 
        MKPlanNode endNode = new MKPlanNode();  
        endNode.name = destination; 

        //展開搜索的城市 
        String city = getResources().getString(R.string.beijing); 
//       System.out.println("----"+city+"---"+destination+"---"+pt); 
        searchModel.drivingSearch(city, startNode, city, endNode); 
        //步行路線 
//       searchModel.walkingSearch(city, startNode, city, endNode); 
        //公交路線 
//       searchModel.transitSearch(city, startNode, endNode); 
      } 
    }); 

  } 

  @Override 
  protected void onResume() { 
    mMapManager.getLocationManager().requestLocationUpdates(locationListener); 
    myLocationOverlay.enableMyLocation(); 
    myLocationOverlay.enableCompass(); // 打開指南針 
    mMapManager.start(); 
    super.onResume(); 
  } 

  @Override 
  protected void onPause() { 
    mMapManager.getLocationManager().removeUpdates(locationListener); 
    myLocationOverlay.disableMyLocation();//顯示當(dāng)前位置 
    myLocationOverlay.disableCompass(); // 關(guān)閉指南針 
    mMapManager.stop(); 
    super.onPause(); 
  } 

  @Override 
  protected boolean isRouteDisplayed() { 
    // TODO Auto-generated method stub 
    return false; 
  } 

  // 常用事件監(jiān)聽,用來(lái)處理通常的網(wǎng)絡(luò)錯(cuò)誤,授權(quán)驗(yàn)證錯(cuò)誤等 
  class MyGeneralListener implements MKGeneralListener { 
      @Override 
      public void onGetNetworkState(int iError) { 
        Log.d("MyGeneralListener", "onGetNetworkState error is "+ iError); 
        Toast.makeText(NavigationDemoActivity.this, "您的網(wǎng)絡(luò)出錯(cuò)啦!", 
            Toast.LENGTH_LONG).show(); 
      } 

      @Override 
      public void onGetPermissionState(int iError) { 
        Log.d("MyGeneralListener", "onGetPermissionState error is "+ iError); 
        if (iError == MKEvent.ERROR_PERMISSION_DENIED) { 
          // 授權(quán)Key錯(cuò)誤: 
          Toast.makeText(NavigationDemoActivity.this,  
              "請(qǐng)?jiān)贐MapApiDemoApp.java文件輸入正確的授權(quán)Key!", 
              Toast.LENGTH_LONG).show(); 
        } 
      } 
    } 
} 

本文題目:android開發(fā)中如何實(shí)現(xiàn)一個(gè)定位與目的地導(dǎo)航功能-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://www.2m8n56k.cn/article18/dodjgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃關(guān)鍵詞優(yōu)化移動(dòng)網(wǎng)站建設(shè)營(yíng)銷型網(wǎng)站建設(shè)商城網(wǎng)站服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
主站蜘蛛池模板: 美女张开腿让男人捅的视频 | 欧美一级毛片免费观看视频 | 午夜爽爽| 国产一成人精品福利网站 | 日韩一级性生活片 | 精品国产高清毛片 | 欧美ⅹxxxx视频 | 国产亚洲一级精品久久 | 日韩美毛片 | 欧美亚洲激情视频 | 亚洲一区中文字幕在线 | 久久se精品一区精品二区 | 欧美一区二区三区视频在线观看 | 久久精品99毛片免费 | 亚洲综合天堂 | 日韩 欧美 中文 亚洲 高清 在线 | 亚洲免费在线播放 | 免费欧美黄色 | 天天看夜夜| 国产玖玖在线观看 | 成人综合在线视频免费观看 | 女人张开腿让男人桶免费最新 | 永久黄网站色视频免费观看99 | 一级做a爰 | 精品国产精品久久一区免费式 | 欧洲成人在线 | 免费人成综合在线视频 | 亚洲一区二区影视 | 国产高清自拍 | 久久福利青草狠狠午夜 | 国产精品久久久久久久9999 | 中文字幕精品在线观看 | 人成午夜性刺激免费 | 在线播放高清国语自产拍免费 | 国产黄色a三级三级三级 | 国产视频在线免费观看 | 国产成人精品微拍视频 | 性色欧美xo影院 | 欧美一区二区三区四区在线观看 | 久久99热精品免费观看k影院 | 免费一级做a爰片性色毛片 免费一极毛片 |