Android Studio 百度地圖導航


   配置就不再多說了,上一篇已經詳細說過了,這次就是根據經緯度坐標做地圖導航,路徑規划。直接上代碼:

package com.example.appview.mian_page.Frament.Anzhuang_Frament.ItemA_Activity;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.View;

import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.CoordType;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.utils.route.BaiduMapRoutePlan;
import com.baidu.mapapi.utils.route.RouteParaOption;
import com.example.appview.R;
import com.example.appview.mian_page.Frament.Preject_Tance_Frament.ItemA_Activity.Preject_ItemA_AlterJZ;
import com.google.android.gms.maps.MapView;
import com.hjq.bar.OnTitleBarListener;

import java.util.ArrayList;
import java.util.List;

public class ItemA_Nav_Activity extends AppCompatActivity {
    double locationX;
    double locationy;
    public  LocationClient mLocationClient = null;
    private MapView mapView;
   // private MyLocationListener myListener = new MyLocationListener();
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        SDKInitializer.initialize(getApplicationContext());
        SDKInitializer.setCoordType(CoordType.BD09LL);
        setContentView(R.layout.activity_item_anav);
        mLocationClient = new LocationClient(getApplicationContext());
        //聲明LocationClient類
       mLocationClient.registerLocationListener(new MyLocationListener());
        getPermissionMethod();
        getlocation();
        LatLng startPoint = new LatLng(39.915291, 116.403857);
        LatLng endPoint = new LatLng(40.056858, 116.308194);
        //構建RouteParaOption參數以及策略
        //也可以通過startName和endName來構造
        RouteParaOption paraOption = new RouteParaOption()
                .startPoint(startPoint)
                .endPoint(endPoint)
                .busStrategyType(RouteParaOption.EBusStrategyType.bus_recommend_way);
       //調起百度地圖
        try {
            BaiduMapRoutePlan.openBaiduMapTransitRoute(paraOption, this);
        } catch (Exception e) {
            e.printStackTrace();
        }

      //調起結束時及時調用finish方法以釋放相關資源
        BaiduMapRoutePlan.finish(this);
    }
    private void getlocation(){
        LocationClientOption option = new LocationClientOption();
        option.setIsNeedAddress(true);//可選,設置是否需要地址信息,默認不需要
        option.setAddrType("all");
        mLocationClient.setLocOption(option);
        mLocationClient.start();
        //mLocationClient為第二步初始化過的LocationClient對象
        //需將配置好的LocationClientOption對象,通過setLocOption方法傳遞給LocationClient對象使用
        //更多LocationClientOption的配置,請參照類參考中LocationClientOption類的詳細說明
    }
//這個是根據獲取當前經緯度坐標,然后到指定坐標做導航。上面直接定義了兩個坐標做測試。
public class MyLocationListener extends BDAbstractLocationListener { @Override public void onReceiveLocation(BDLocation location){ //此處的BDLocation為定位結果信息類,通過它的各種get方法可獲取定位相關的全部結果 //以下只列舉部分獲取經緯度相關(常用)的結果信息 //更多結果信息獲取說明,請參照類參考中BDLocation類中的說明 double latitude = location.getLatitude(); //獲取緯度信息 double longitude = location.getLongitude(); //獲取經度信息 //float radius = location.getRadius(); //獲取定位精度,默認值為0.0f //String coorType = location.getCoorType(); //獲取經緯度坐標類型,以LocationClientOption中設置過的坐標類型為准 int errorCode = location.getLocType(); //獲取定位類型、定位錯誤返回碼,具體信息可參照類參考中BDLocation類中的說明 //此處的BDLocation為定位結果信息類,通過它的各種get方法可獲取定位相關的全部結果 //以下只列舉部分獲取地址相關的結果信息 //更多結果信息獲取說明,請參照類參考中BDLocation類中的說明 //String addr = location.getAddrStr(); //獲取詳細地址信息 String country = location.getCountry(); //獲取國家 String province = location.getProvince(); //獲取省份 String city = location.getCity(); //獲取城市 String district = location.getDistrict(); //獲取區縣 String street = location.getStreet(); //獲取街道信息 //String adcode = location.getAdCode(); //獲取adcode String town = location.getTown(); //獲取鄉鎮信息 String str=country+"-"+province+"-"+city+"-"+district+"-"+street+"-"+town; locationX=latitude; locationy=longitude; } } // 權限請求 private void getPermissionMethod() { List<String> permissionList = new ArrayList<>(); if(ContextCompat.checkSelfPermission(ItemA_Nav_Activity.this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED){ permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION); } if (!permissionList.isEmpty()){ //權限列表不是空 String[] permissions = permissionList.toArray(new String[permissionList.size()]); ActivityCompat.requestPermissions(ItemA_Nav_Activity.this,permissions,1); } } }

  ,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM