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