我正在制作一个Android应用程序。在我的应用程序中,我想得到我当前位置的城市名称,但我在我的国家有问题。如果我使用Google Geode API,则无法识别它,例如:当我尝试此查询时,必须使用纬度和经度返回有关我的位置的信息;它不起作用。
这是查询:http://maps.googleapis.com/maps/api/geocode/json?latlng=32.3117,35.0272&sensor=true
当我使用这段代码时,我得到了address = 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();
}
问题仅在我的国家:(
任何帮助如何解决???
答案 0 :(得分:2)
此代码对我很有用。它代表您的纬度和经度为您提供城市名称和国家/地区名称。但在某些地方它没有为您提供城市名称,即亚洲等(某些地方)。
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" />
答案 1 :(得分:0)
你编码了你的网址吗? 一个人需要在通过http请求发送和接收时对URL进行编码和解码
答案 2 :(得分:0)
如果您的城市为空或任何其他值
然后尝试这段代码,对我来说很好
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(0)
addresses.get(1)