您的位置:首页 > 移动开发 > Android开发

百度地图开发之定位以及反地理编码获取周围地理位置

2017-02-27 13:06 591 查看

百度地图定位 + 反地理编码

一.百度地图定位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) {

}
});3.通过反地理编码拿到PoiList
geoCoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {

@Override
public void onGetGeoCodeResult(GeoCodeResult geoCodeResult) {
if (geoCodeResult == null || geoCodeResult.error != earchResult.ERRORNO.NO_ERROR) {
Toast.makeText(SelectLocationActivity.this, getResources().getText(R.string.no_find), 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(SelectLocationActivity.this, getResources().getText(R.string.no_find), 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();
}

});}

效果图:


源码下载链接:http://download.csdn.net/detail/qq_17470165/9765349
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐