百度地圖之定自己當前的位置
阿新 • • 發佈:2019-02-14
}
/***
* 第一步,初始化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);
//設定當前位置的縮放級別。---繫結的是當前的位置,因此這句話一定需要
/***
* 第一步,初始化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);
//設定當前位置的縮放級別。---繫結的是當前的位置,因此這句話一定需要