从 5.1.1 版本的经纬度获取地址

Posted

技术标签:

【中文标题】从 5.1.1 版本的经纬度获取地址【英文标题】:Getting address from latitude and longitude in version 5.1.1 【发布时间】:2018-12-22 14:27:20 【问题描述】:

我是 android 新手,但我被困在一件事上。我有纬度和经度,我想从 latlng 获取地址。我在 Marshmallow 和 Nougat 等较高版本中成功从 latlng 获取地址,但在 5.1.1 版本中遇到问题。

我的地理编码器无法正常工作。我总是得到空值。我已经看到了很多答案,但有一个共同点 Geocoder,如果有任何选项可以在没有地理编码器或使用地理编码器的情况下获取地址。

我的代码是

   if (this.geocoder == null) 
        this.geocoder = new Geocoder(this, Locale.getDefault());
    

    try 
        List<Address> addresses = geocoder.getFromLocation(Double.parseDouble(lat), Double.parseDouble(lng), 1);
            if (!addresses.isEmpty()) 
            address = addresses.get(0).getLocality();  

         PrefsManager.with(this).save(Constants.PREF_ADDRESS,addresses.get(0).
          getLocality());
            return addresses.get(0).getLocality();
        
     catch (IOException e) 
        e.printStackTrace();
    

【问题讨论】:

你能分享你遇到的错误吗? 请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。 【参考方案1】:

试试这个:-

Geocoder gcd = new Geocoder(this);
Address address;

try

    List<Address> adrsList = gcd.getFromLocation(latitude, longitude, 1);

    if(adrsList != null && adrsList.size()>0)
    
        address = adrsList.get(0);
        buffer = new StringBuffer();

        for(int i=0; i<=address.getMaxAddressLineIndex(); i++)
        
            buffer.append(address.getAddressLine(i));
        

            textView.setText("Address: " + buffer.toString());
        
        else
        
            Toast.makeText(this, "No Nearby Location Found", Toast.LENGTH_SHORT).show();
        
    
    catch (IOException e)
    
        Toast.makeText(this, "Error: " + e, Toast.LENGTH_SHORT).show();
    

【讨论】:

以上是关于从 5.1.1 版本的经纬度获取地址的主要内容,如果未能解决你的问题,请参考以下文章

从经纬度获取地址

如何从 MKMapkit 中的地址获取经纬度?

如何从谷歌地图中的经纬度获取地址位置。? [关闭]

MapBox GL JS:从通过代码设置的字符串地址获取经纬度坐标

PHP - 从地址获取纬度和经度[关闭]

从地理编码纬度和经度获取地址