百度地圖定位 + 反地理編碼
一.百度地圖定位
1.百度定位配置代碼
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//設置定位模式
option.setOpenGps(true);// 打開gps:默認不打開
option.setCoorType("bd09ll");//返回的定位結果是百度經緯度,默認值gcj02
option.setScanSpan(5000);//設置發起定位請求的間隔時間爲5000ms
option.setIsNeedAddress(true);//返回的定位結果包含地址信息
locationClient = new LocationClient(this);
locationClient.setLocOption(option);
locationClient.registerLocationListener(new ScenesLocationListener());(此處實現BDLocationListener,可以拿到經緯度)
2.通過改變地圖的位置,獲取到地圖的中心點經緯度
map.setOnMapStatusChangeListener(new BaiduMap.OnMapStatusChangeListener() {
@Override
public void onMapStatusChangeStart(MapStatus mapStatus) {
LatLng ptCenter = map.getMapStatus().target;
setPopupTipsInfo(ptCenter);
}
@Override
public void onMapStatusChange(MapStatus mapStatus) {
}
@Override
public void onMapStatusChangeFinish(MapStatus mapStatus) {
}
});
geoCoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {
@Override
public void onGetGeoCodeResult(GeoCodeResult geoCodeResult) {
if (geoCodeResult == null || geoCodeResult.error != earchResult.ERRORNO.NO_ERROR) {
Toast.makeText(SelectLocationActivity.this, "未找到地址", Toast.LENGTH_SHORT).show();
return;
}
LatLng lat = new LatLng(geoCodeResult.getLocation().latitude,
geoCodeResult.getLocation().longitude);
geoCoder.reverseGeoCode(new ReverseGeoCodeOption().location(lat));
MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(lat);
map.clear();
map.animateMapStatus(u);
}
@Override
public void onGetReverseGeoCodeResult(ReverseGeoCodeResult reverseGeoCodeResult) {
if (reverseGeoCodeResult == null || reverseGeoCodeResult.error != SearchResult.ERRORNO.NO_ERROR) {
Toast.makeText(this,"未找到地址", Toast.LENGTH_SHORT).show();
} else {
datas.clear();
List<PoiInfo> poiList = reverseGeoCodeResult.getPoiList();
selectLat = reverseGeoCodeResult.getLocation().latitude;
selectLon = reverseGeoCodeResult.getLocation().longitude;
if (poiList != null && poiList.size() > 0) {
for (int i = 0; i < poiList.size(); i++) {
datas.add(poiList.get(i).name);
}
}
adapter.notifyDataSetChanged();
}
});}