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

举报
程思扬 发表于 2022/01/13 23:08:17 2022/01/13
3.8k+ 0 0
【摘要】 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

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

    全部回复

    上滑加载中

    设置昵称

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

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

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