Android笔记:高德地图-点击获得目的经纬度,根据经纬度获取地址(逆地理编码)

举报
程思扬 发表于 2022/01/13 23:08:17 2022/01/13
【摘要】 1.需要资源:高德地图搜索SDK以及相关SDk下载地址 2.根据经纬度得到具体地址: 1.这里需要用到地图搜索SDK; 2.通过逆地理编码来实现。 3.示例代码: 首先要实现GeocodeSearch.OnGeocodeSearchListener接口 /** * * @author 程龙 */public cl...

1.需要资源:
高德地图搜索SDK以及相关SDk下载地址

2.根据经纬度得到具体地址:

1.这里需要用到地图搜索SDK;
2.通过逆地理编码来实现。

3.示例代码:

首先要实现GeocodeSearch.OnGeocodeSearchListener接口


  
  1. /**
  2. *
  3. * @author 程龙
  4. */
  5. public class AddEnterprisesActivity extends Activity implements LocationSource,
  6. AMapLocationListener, AMap.OnMapClickListener, GeocodeSearch.OnGeocodeSearchListener {
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.activity_chose_address);
  11. initUi();
  12. mapView.onCreate(savedInstanceState);
  13. }
  14. @Override
  15. protected void initUi() {
  16. mapView = (MapView) findViewById(R.id.mv_map);
  17. aMap = mapView.getMap();
  18. aMap.setOnMapLongClickListener(this);
  19. //地理搜索类
  20. geocodeSearch = new GeocodeSearch(this);
  21. geocodeSearch.setOnGeocodeSearchListener(this);
  22. //大家可根据自己的需要初始化map和对map进行一些设置,在这里我就不写了。
  23. }
  24. /**
  25. * map点击事件
  26. * @param latLng 经纬度
  27. */
  28. @Override
  29. public void onMapClick(LatLng latLng) {
  30. aMap.clear();
  31. latitude = latLng.latitude;
  32. longitude = latLng.longitude;
  33. MarkerOptions otMarkerOptions = new MarkerOptions();
  34. otMarkerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.weizhi));
  35. otMarkerOptions.position(latLng);
  36. getAddressByLatlng(latLng);
  37. aMap.addMarker(otMarkerOptions);
  38. aMap.moveCamera(CameraUpdateFactory.changeLatLng(latLng));
  39. }
  40. private void getAddressByLatlng(LatLng latLng) {
  41. //逆地理编码查询条件:逆地理编码查询的地理坐标点、查询范围、坐标类型。
  42. LatLonPoint latLonPoint = new LatLonPoint(latLng.latitude, latLng.longitude);
  43. RegeocodeQuery query = new RegeocodeQuery(latLonPoint, 500f, GeocodeSearch.AMAP);
  44. //异步查询
  45. geocodeSearch.getFromLocationAsyn(query);
  46. }
  47. /**
  48. * 得到逆地理编码异步查询结果
  49. */
  50. @Override
  51. public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) {
  52. RegeocodeAddress regeocodeAddress = regeocodeResult.getRegeocodeAddress();
  53. String formatAddress = regeocodeAddress.getFormatAddress();
  54. simpleAddress = formatAddress.substring(9);
  55. tvChoseAddress.setText("查询经纬度对应详细地址:\n" + simpleAddress);
  56. }
  57. //这里再提供另外一种方法
  58. private void getLatlon(String cityName){
  59. GeocodeSearch geocodeSearch=new GeocodeSearch(context);
  60. geocodeSearch.setOnGeocodeSearchListener(new GeocodeSearch.OnGeocodeSearchListener() {
  61. @Override
  62. public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) {
  63. }
  64. @Override
  65. public void onGeocodeSearched(GeocodeResult geocodeResult, int i) {
  66. if (i==1000){
  67. if (geocodeResult!=null && geocodeResult.getGeocodeAddressList()!=null &&
  68. geocodeResult.getGeocodeAddressList().size()>0){
  69. GeocodeAddress geocodeAddress = geocodeResult.getGeocodeAddressList().get(0);
  70. double latitude = geocodeAddress.getLatLonPoint().getLatitude();//纬度
  71. double longititude = geocodeAddress.getLatLonPoint().getLongitude();//经度
  72. String adcode= geocodeAddress.getAdcode();//区域编码
  73. Log.e("地理编码", geocodeAddress.getAdcode()+"");
  74. Log.e("纬度latitude",latitude+"");
  75. Log.e("经度longititude",longititude+"");
  76. }else {
  77. ToastUtils.show(context,"地址名出错");
  78. }
  79. }
  80. }
  81. });
  82. GeocodeQuery geocodeQuery=new GeocodeQuery(cityName.trim(),"29");
  83. geocodeSearch.getFromLocationNameAsyn(geocodeQuery);
  84. }
  85. }

最后大家可根据自己的需要进行修改

文章来源: chengsy.blog.csdn.net,作者:程思扬,版权归原作者所有,如需转载,请联系作者。

原文链接:chengsy.blog.csdn.net/article/details/82493155

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。