前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android笔记:高德地图-点击获得目的经纬度,根据经纬度获取地址(逆地理编码)

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

作者头像
程思扬
发布2022-01-10 15:03:54
1.7K0
发布2022-01-10 15:03:54
举报
文章被收录于专栏:程思阳的专栏

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

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

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

3.示例代码:

首先要实现GeocodeSearch.OnGeocodeSearchListener接口

代码语言:javascript
复制
 /**
 * 
 * @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);


    }

    }

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/09/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档