1. 程式人生 > >百度地圖之定自己當前的位置

百度地圖之定自己當前的位置

}
/***
* 第一步,初始化LocationClient類
此處需要注意:LocationClient類必須在主執行緒中宣告,需要Context型別的引數。
Context需要時全程序有效的Context,推薦用getApplicationConext獲取全程序有效的Context。


* */
public void onCreate() {
   mLocationClient = new LocationClient(getApplicationContext());     
   //宣告LocationClient類
   mLocationClient.registerLocationListener( myListener );    
   //註冊監聽函式
}
/*
* 第二步,配置定位SDK引數
設定定位引數包括:定位模式(高精度定位模式、低功耗定位模式和僅用裝置定位模式),返回座標型別,是否開啟GPS,是否返回地址資訊、
位置語義化資訊、POI資訊等等。
LocationClientOption類,該類用來設定定位SDK的定位方式,例如:

* ***/

private void location(){
   LocationClientOption option = new LocationClientOption();
   option.setLocationMode(LocationMode.Battery_Saving);
   //可選,預設高精度,設定定位模式,高精度,低功耗,僅裝置
 
   option.setCoorType("bd09ll");
   //可選,預設gcj02,設定返回的定位結果座標系
 
   int span=1000;
   option.setScanSpan(span);
   //可選,預設0,即僅定位一次,設定發起定位請求的間隔需要大於等於1000ms才是有效的
 
   option.setIsNeedAddress(true);
   //可選,設定是否需要地址資訊,預設不需要
 
   option.setOpenGps(true);
   //可選,預設false,設定是否使用gps
 
   option.setLocationNotify(true);
   //可選,預設false,設定是否當GPS有效時按照1S/1次頻率輸出GPS結果
 
   option.setIsNeedLocationDescribe(true);
   //可選,預設false,設定是否需要位置語義化結果,可以在BDLocation.getLocationDescribe裡得到,結果類似於“在北京天安門附近”
 
   option.setIsNeedLocationPoiList(true);
   //可選,預設false,設定是否需要POI結果,可以在BDLocation.getPoiList裡得到
 
   option.setIgnoreKillProcess(false);
   //可選,預設true,定位SDK內部是一個SERVICE,並放到了獨立程序,設定是否在stop的時候殺死這個程序,預設不殺死  
 
   option.SetIgnoreCacheException(false);
   //可選,預設false,設定是否收集CRASH資訊,預設收集
 
   option.setEnableSimulateGps(false);
   //可選,預設false,設定是否需要過濾GPS模擬結果,預設需要
 
   mLocationClient.setLocOption(option);
}
/***
* 第三步,實現BDLocationListener介面
BDLocationListener為結果監聽介面,非同步獲取定位結果,實現方式如下:
* **/


public class MyLocationListener implements BDLocationListener {

@Override
public void onReceiveLocation(BDLocation bdLocation) {
Double latitude = bdLocation.getLatitude();
Double longitude = bdLocation.getLongitude();
MarkerOptions options = new MarkerOptions().icon(
BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher))
.position(new LatLng(latitude, longitude));
// 首先清除圖層 不然當位置改變的時候圖層會疊加
map.clear();
map.addOverlay(options);
LatLng latLng = new LatLng(latitude, longitude);
//設定當前位置的縮放級別。---繫結的是當前的位置,因此這句話一定需要