如果提供纬度和经度,我在Android上使用谷歌地理编码器服务来获取我的位置的描述。到目前为止,我已经能够获得目前正确的长度,但是使用地理编码器获取位置名称或邮政编码等似乎存在问题。下面是我的代码片段:
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
try {
Geocoder myLocation = new Geocoder(this, Locale.getDefault());
List<Address> myList = myLocation.getFromLocation(lat,lng, 1);
Log.v("IGA",""+myList.size());
Address address = (Address) myList.get(0);
if (myList != null && myList.size() > 0) {
Toast.makeText(this, "country: " + myList.get(0).getCountryName(), Toast.LENGTH_LONG).show();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
myList.size()始终返回0.我不知道我的代码或其他任何内容是否有问题
有了google,我得到了一些线索,这就是android在线doc所说的:
Geocoder类需要一个未包含在核心android框架中的后端服务。如果平台中没有后端服务,则Geocoder查询方法将返回空列表。使用isPresent()方法确定是否存在Geocoder实现。
我不知道这个后端服务是什么,并且已经疲惫不堪,不知道是否有任何第三方网络服务会做同样的伎俩。谢谢你提前!
答案 0 :(得分:3)
GeoCoder仅适用于设备,但如果您不确定GeoCoder api的可用性,请使用google rest api作为GeoCoder Api的替代品,请参阅以下链接:
http://maps.google.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true
通过输入纬度和经度来获取地址,它返回json字符串中的结果,如果你想在xml而不是json中使用xml来代替json中的结果。