我尝试使用google地图(例如:地点,国家/地区,邮政编码) 纬度和经度。以下是获取空数据的代码:
修改
public void onLocationChanged(Location location) {
geocoder = new Geocoder(this, Locale.getDefault());
if (location != null) {
try {
addresses = geocoder.getFromLocation(location.getLatitude()/1E6,
location.getLongitude()/1E6, 1);
if (addresses.size() > 0) {
resultAddress = addresses.get(0);
locality = resultAddress.getLocality();
sublocality = resultAddress.getSubLocality();
postalcode = resultAddress.getPostalCode();
country = resultAddress.getCountryName();
adminarea = resultAddress.getSubAdminArea();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我尝试手动分配纬度和经度,但什么都没有。
任何人都可以纠正我的错误吗?谢谢
答案 0 :(得分:4)
我认为问题出在方法的参数上。我猜位置是 GeoPoint 在这种情况下,而不是
addresses = geocoder.getFromLocation(location.getLatitude(),
location.getLongitude(), 1);
试试这个:
addresses = geocoder.getFromLocation(location.getLatitude()/1E6,
location.getLongitude()/1E6, 1);
因为地理位置中的坐标以微度表示
修改强> 我复制了你的代码并试了一下。假设您的“位置”对象是GeoPoint,则可以使用的代码如下:
GeoPoint location = new GeoPoint(lat, lon);
if (location != null) {
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
try {
List<Address> addresses = geocoder.getFromLocation(location.getLatitudeE6()/1E6,
location.getLongitudeE6()/1E6, 1);
if (addresses.size() > 0) {
Address resultAddress = addresses.get(0);
String locality = resultAddress.getLocality();
String sublocality = resultAddress.getSubLocality();
String postalcode = resultAddress.getPostalCode();
String country = resultAddress.getCountryName();
String adminarea = resultAddress.getSubAdminArea();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
但是,如果您在模拟器上进行测试,请确保您已连接到互联网。否则,方法“getFromLocation”无法找到地址,也不会显示任何内容。如果logcat中没有任何错误,问题只是没有显示任何内容,那就是问题:没有网络。
答案 1 :(得分:0)
您在manifest.xml中有<uses-permission android:name="android.permission.INTERNET" />
吗?