配置就不再多說了,上一篇已經詳細說過了,這次就是根據經緯度坐標做地圖導航,路徑規划。直接上代碼:
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); } } }
,