android取代地理编码器

时间:2012-02-25 06:21:35

标签: android

如果提供纬度和经度,我在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实现。
我不知道这个后端服务是什么,并且已经疲惫不堪,不知道是否有任何第三方网络服务会做同样的伎俩。谢谢你提前!

1 个答案:

答案 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中的结果。