Android笔记:高德地图-点击获得目的经纬度,根据经纬度获取地址(逆地理编码)
【摘要】
1.需要资源:高德地图搜索SDK以及相关SDk下载地址
2.根据经纬度得到具体地址:
1.这里需要用到地图搜索SDK; 2.通过逆地理编码来实现。
3.示例代码:
首先要实现GeocodeSearch.OnGeocodeSearchListener接口
/** * * @author 程龙 */public cl...
1.需要资源:
高德地图搜索SDK以及相关SDk下载地址
2.根据经纬度得到具体地址:
1.这里需要用到地图搜索SDK;
2.通过逆地理编码来实现。
3.示例代码:
首先要实现GeocodeSearch.OnGeocodeSearchListener接口
/**
*
* @author 程龙
*/
public class AddEnterprisesActivity extends Activity implements LocationSource,
AMapLocationListener, AMap.OnMapClickListener, GeocodeSearch.OnGeocodeSearchListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chose_address);
initUi();
mapView.onCreate(savedInstanceState);
}
@Override
protected void initUi() {
mapView = (MapView) findViewById(R.id.mv_map);
aMap = mapView.getMap();
aMap.setOnMapLongClickListener(this);
//地理搜索类
geocodeSearch = new GeocodeSearch(this);
geocodeSearch.setOnGeocodeSearchListener(this);
//大家可根据自己的需要初始化map和对map进行一些设置,在这里我就不写了。
}
/**
* map点击事件
* @param latLng 经纬度
*/
@Override
public void onMapClick(LatLng latLng) {
aMap.clear();
latitude = latLng.latitude;
longitude = latLng.longitude;
MarkerOptions otMarkerOptions = new MarkerOptions();
otMarkerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.weizhi));
otMarkerOptions.position(latLng);
getAddressByLatlng(latLng);
aMap.addMarker(otMarkerOptions);
aMap.moveCamera(CameraUpdateFactory.changeLatLng(latLng));
}
private void getAddressByLatlng(LatLng latLng) {
//逆地理编码查询条件:逆地理编码查询的地理坐标点、查询范围、坐标类型。
LatLonPoint latLonPoint = new LatLonPoint(latLng.latitude, latLng.longitude);
RegeocodeQuery query = new RegeocodeQuery(latLonPoint, 500f, GeocodeSearch.AMAP);
//异步查询
geocodeSearch.getFromLocationAsyn(query);
}
/**
* 得到逆地理编码异步查询结果
*/
@Override
public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) {
RegeocodeAddress regeocodeAddress = regeocodeResult.getRegeocodeAddress();
String formatAddress = regeocodeAddress.getFormatAddress();
simpleAddress = formatAddress.substring(9);
tvChoseAddress.setText("查询经纬度对应详细地址:\n" + simpleAddress);
}
//这里再提供另外一种方法
private void getLatlon(String cityName){
GeocodeSearch geocodeSearch=new GeocodeSearch(context);
geocodeSearch.setOnGeocodeSearchListener(new GeocodeSearch.OnGeocodeSearchListener() {
@Override
public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) {
}
@Override
public void onGeocodeSearched(GeocodeResult geocodeResult, int i) {
if (i==1000){
if (geocodeResult!=null && geocodeResult.getGeocodeAddressList()!=null &&
geocodeResult.getGeocodeAddressList().size()>0){
GeocodeAddress geocodeAddress = geocodeResult.getGeocodeAddressList().get(0);
double latitude = geocodeAddress.getLatLonPoint().getLatitude();//纬度
double longititude = geocodeAddress.getLatLonPoint().getLongitude();//经度
String adcode= geocodeAddress.getAdcode();//区域编码
Log.e("地理编码", geocodeAddress.getAdcode()+"");
Log.e("纬度latitude",latitude+"");
Log.e("经度longititude",longititude+"");
}else {
ToastUtils.show(context,"地址名出错");
}
}
}
});
GeocodeQuery geocodeQuery=new GeocodeQuery(cityName.trim(),"29");
geocodeSearch.getFromLocationNameAsyn(geocodeQuery);
}
}
最后大家可根据自己的需要进行修改
文章来源: chengsy.blog.csdn.net,作者:程思扬,版权归原作者所有,如需转载,请联系作者。
原文链接:chengsy.blog.csdn.net/article/details/82493155
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)