【问题标题】:can't get the city name of my current location in my country, android无法获取我当前所在国家/地区的城市名称,android
【发布时间】:2018-10-13 12:30:19
【问题描述】:

我正在制作一个 android 应用程序。在我的应用程序中,我想获取我当前位置的城市名称,但我在我的国家/地区遇到了问题。如果我使用 Google Geode API 它无法识别它,例如:当我尝试这个查询时,它必须使用纬度和经度返回关于我的位置的信息;它不起作用。

这是查询:http://maps.googleapis.com/maps/api/geocode/json?latlng=32.3117,35.0272&sensor=true

当我使用这段代码时,我得到地址= null:

Geocoder gCoder = new Geocoder(this);
                List<Address> addresses;
                try {
                    addresses = gCoder.getFromLocation(lat, lng, 5);

                    Log.e("get adderess", addresses + "");
                    if (addresses != null && addresses.size() > 0) {
                        city = addresses.get(0).getLocality();

                        System.out.print(addresses.get(0).getLocality());
                    }

                                    } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

问题只在我的国家:(

任何帮助如何解决它??

【问题讨论】:

标签: android google-maps


【解决方案1】:

此代码对我来说很好用。它代表您的纬度和经度为您提供城市名称和国家/地区名称。但在某些地方它没有给您城市名称,即亚洲等(某些地方)。

    Geocoder geocoder = new Geocoder(getBaseContext(), Locale.getDefault());
    Address address;
    List<Address> list;
    list = geocoder.getFromLocation(latitude,longitude,1);//33.64600, 72.96115
    address = list.get(0);
    String cityname =  address.getLocality();
    String countryname =   address.getCountryName();        
    Log.d("cityname",cityname.toString());
    Log.d("countryname",countryname.toString());

另外请在 AndroidManifest.xml 中添加以下 uses-permission 节点

    <uses-permission android:name="android.permission.INTERNET" />

【讨论】:

  • 我的国家是:巴勒斯坦
  • 其实我现在知道你的问题了,城市名称等。它只显示地址作为描述。这就是为什么它也没有出现在你的代码中。
  • 对不起兄弟,我不能再知道了。好吧,我认为谷歌可能有偏见,故意不提及您的国家名称等。尝试更改全国的 GPS 坐标,并确定它是否与您当前的位置或与您的整个国家/地区。如果您仍然需要任何帮助,请在此处发表评论。祝您好运:)
  • 非常感谢,我是女孩 :) 问题出在我的整个国家
  • 我用的是openstreetmap而不是谷歌,但它很混乱,它有时会返回城市名称、道路和城镇
【解决方案2】:

您是否对您的网址进行了编码? 通过http请求发送和接收时需要对url进行编码和解码

【讨论】:

    【解决方案3】:

    如果您将 null 作为您的城市或任何其他值
    然后试试这段代码,它对我来说很好用

    Geocoder geocoder = new Geocoder(YourActivity.this, Locale.getDefault());
    
            List<Address> addresses  = null;
            try {
                addresses = geocoder.getFromLocation(latitude,longitude, 2);
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            String country = addresses.get(1).getCountryName();
            String city = addresses.get(1).getLocality();
    

    第一个值是 null
    在这段代码中,您将获得第二个值而不是第一个值,因此您将输入 addresses.get(1) 而不是输入addresses.get(0)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-14
      • 2017-06-30
      • 1970-01-01
      • 2019-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-12
      相关资源
      最近更新 更多