我有一个活动,它首先使用AsyncTask
来获取和解析来自服务器的数据。
条目包含纬度和经度。
然后,在onPostExecute()
中,我加载了我的适配器并显示了我的listView。在我的适配器getView()
中,我尝试显示纬度和经度的位置:
private String getPosition(String longitude, String latitude)
{
float lon = Float.parseFloat(longitude),
lat = Float.parseFloat(latitude);
Geocoder geocoder = new Geocoder(MyActivity.this, Locale.getDefault());
List<Address> addresses = null;
try
{
addresses = geocoder.getFromLocation(lat, lon, 1);
} catch (IOException e)
{
e.printStackTrace();
}
if(addresses == null || addresses.size() == 0) return "No location found.";
else
{
String city = addresses.get(0).getAddressLine(1);
String country = addresses.get(0).getAddressLine(2);
return (city + ", " + country.toUpperCase());
}
}
我总是得到“找不到位置”。但我确定有些条目是正确的。例如,一个纬度为39.017,经度为125.73。 Google的API显示至少有一个地址:
http://maps.googleapis.com/maps/api/geocode/json?latlng=39.017,125.73&sensor=true
我也在我的Manifest中声明了这一点:
<uses-permission android:name="android.permission.INTERNET" >
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
但所有这些都不会返回任何地址。知道为什么吗?
答案 0 :(得分:-1)
geoCoder.getFromLocation(反向地理编码)方法将在您将avd(虚拟设备)目标构建为Google API 19时生效,并且应用程序的构建目标设置为“Google API 19”(您可以使用修改构建目标)项目 - &GT;属性)。这对我有用。如果您需要更多详细信息,请回复此帖。