摘要:目標實現定位到當前所在位置實現當前定位獲取當前地址,省份,街道等獲取經緯度修改縮放比例去除百度地圖修改定位圖片如下效果圖上代碼在使用各組件之前初始化信息,傳入注意該方法要再方法之前實現獲取地圖控件引用移除的聲明類開啟定位圖層注冊監聽函數設置
目標:實現定位到當前所在位置
實現當前定位
獲取當前地址,省份,街道等
獲取經緯度
修改縮放比例
去除百度地圖logo
修改定位圖片如下:
效果圖:
上代碼
public class MainActivity extends AppCompatActivity { private MapView mMapView = null; BaiduMap mBaiduMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //在使用SDK各組件之前初始化context信息,傳入ApplicationContext //注意該方法要再setContentView方法之前實現 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); //獲取地圖控件引用 mMapView = (MapView) findViewById(R.id.bmapView); mBaiduMap = mMapView.getMap(); //移除baidu的logo mMapView.removeViewAt(1); mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder().zoom(20.0f).build())); mLocationClient = new LocationClient(getApplicationContext()); //聲明LocationClient類 mLocationClient.registerLocationListener(myListener); // 開啟定位圖層 mBaiduMap.setMyLocationEnabled(true); //注冊監聽函數 // 設置定位圖層的配置(定位模式,是否允許方向信息,用戶自定義定位圖標) BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory .fromResource(R.drawable.aa); MyLocationConfiguration config = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.FOLLOWING, true, mCurrentMarker); mBaiduMap.setMyLocationConfiguration(config); // getLocation(); getlatAndLng(); // mLocationClient.start(); } private void showMyLocate(MyLocationData location) { MyLocationData locData = new MyLocationData.Builder() .accuracy(location.accuracy) // 此處設置開發者獲取到的方向信息,順時針0-360 .direction(location.direction).latitude(location.latitude) .longitude(location.longitude).build(); // 設置定位數據 mBaiduMap.setMyLocationData(locData); // mBaiduMap.setMyLocationEnabled(false); } public LocationClient mLocationClient = null; private MyLocationListener myListener = new MyLocationListener(); private void getLocation() { LocationClientOption option = new LocationClientOption(); option.setIsNeedAddress(true); //可選,是否需要地址信息,默認為不需要,即參數為false //如果開發者需要獲得當前點的地址信息,此處必須為true mLocationClient.setLocOption(option); //mLocationClient為第二步初始化過的LocationClient對象 //需將配置好的LocationClientOption對象,通過setLocOption方法傳遞給LocationClient對象使用 //更多LocationClientOption的配置,請參照類參考中LocationClientOption類的詳細說明 mLocationClient.start(); } private void getlatAndLng() { LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy); //可選,設置定位模式,默認高精度 //LocationMode.Hight_Accuracy:高精度; //LocationMode. Battery_Saving:低功耗; //LocationMode. Device_Sensors:僅使用設備; option.setCoorType("bd09ll"); //可選,設置返回經緯度坐標類型,默認gcj02 //gcj02:國測局坐標; //bd09ll:百度經緯度坐標; //bd09:百度墨卡托坐標; //海外地區定位,無需設置坐標類型,統一返回wgs84類型坐標 option.setScanSpan(1000); //可選,設置發起定位請求的間隔,int類型,單位ms //如果設置為0,則代表單次定位,即僅定位一次,默認為0 //如果設置非0,需設置1000ms以上才有效 option.setOpenGps(true); //可選,設置是否使用gps,默認false //使用高精度和僅用設備兩種定位模式的,參數必須設置為true option.setLocationNotify(true); //可選,設置是否當GPS有效時按照1S/1次頻率輸出GPS結果,默認false option.setIgnoreKillProcess(false); //可選,定位SDK內部是一個service,并放到了獨立進程。 //設置是否在stop的時候殺死這個進程,默認(建議)不殺死,即setIgnoreKillProcess(true) option.SetIgnoreCacheException(false); //可選,設置是否收集Crash信息,默認收集,即參數為false option.setWifiCacheTimeOut(5 * 60 * 1000); //可選,7.2版本新增能力 //如果設置了該接口,首次啟動定位時,會先判斷當前WiFi是否超出有效期,若超出有效期,會先重新掃描WiFi,然后定位 option.setEnableSimulateGps(false); //可選,設置是否需要過濾GPS仿真結果,默認需要,即參數為false mLocationClient.setLocOption(option); //mLocationClient為第二步初始化過的LocationClient對象 //需將配置好的LocationClientOption對象,通過setLocOption方法傳遞給LocationClient對象使用 //更多LocationClientOption的配置,請參照類參考中LocationClientOption類的詳細說明 mLocationClient.start(); } @Override protected void onDestroy() { super.onDestroy(); //在activity執行onDestroy時執行mMapView.onDestroy(),實現地圖生命周期管理 // 當不需要定位圖層時關閉定位圖層 mBaiduMap.setMyLocationEnabled(false); mMapView.onDestroy(); } @Override protected void onResume() { super.onResume(); //在activity執行onResume時執行mMapView. onResume (),實現地圖生命周期管理 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); //在activity執行onPause時執行mMapView. onPause (),實現地圖生命周期管理 mMapView.onPause(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_map_normal: mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); break; case R.id.menu_map_satellite: mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE); break; case R.id.menu_map_none: mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NONE); break; } return true; } class MyLocationListener extends BDAbstractLocationListener { @Override public void onReceiveLocation(BDLocation bdLocation) { MyLocationData locData = new MyLocationData.Builder() .accuracy(bdLocation.getRadius()) // 此處設置開發者獲取到的方向信息,順時針0-360 .direction(bdLocation.getDirection()).latitude(bdLocation.getLatitude()) .longitude(bdLocation.getLongitude()).build(); mBaiduMap.setMyLocationData(locData); String addr = bdLocation.getAddrStr(); //獲取詳細地址信息 String country = bdLocation.getCountry(); //獲取國家 String province = bdLocation.getProvince(); //獲取省份 String city = bdLocation.getCity(); //獲取城市 String district = bdLocation.getDistrict(); //獲取區縣 String street = bdLocation.getStreet(); //獲取街道信息 showMyLocate(locData); } } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71369.html
摘要:需求后臺新增編輯活動項目時,用戶可以自己通過地圖插件選擇位置手動定位,選擇后,系統能夠獲得當前位置的地址信息以及坐標信息,以方便后續程序的處理。技術上主要以百度地圖為核心,彈出層和百度中結果配合,父子頁面傳值引導達成目標。 需求 后臺新增/編輯活動項目時,用戶可以自己通過地圖插件選擇位置(手動定位),選擇后,系統能夠獲得當前位置的地址信息以及坐標信息,以方便后續程序的處理。 代碼 不啰...
閱讀 826·2021-11-22 11:59
閱讀 3230·2021-11-17 09:33
閱讀 2308·2021-09-29 09:34
閱讀 1941·2021-09-22 15:25
閱讀 1955·2019-08-30 15:55
閱讀 1321·2019-08-30 15:55
閱讀 530·2019-08-30 15:53
閱讀 3346·2019-08-29 13:55