Android,在Java中将邮政编码转换为经度和纬度的最快捷,最有效的方法是什么?

时间:2014-02-17 16:55:29

标签: java android eclipse google-maps google-maps-api-3

我知道如何从经度和纬度坐标获取邮政编码,但我不知道如何获得反向(来自邮政编码的经度和纬度)我该怎么做?

Android

从经度和纬度坐标获取邮政编码的代码:

Geocoder geoCoder = new Geocoder(getApplicationContext(), Locale.getDefault());
List<Address> address = null;

if (geoCoder != null){
   try {
       address= geoCoder.getFromLocation(latPoint, lngPoint, 1);
       } catch (IOException e1) {
       // TODO Auto-generated catch block
       e1.printStackTrace();
      }
      if (address.size()> 0){
        String postCode = address.get(0).getPostalCode();
      }

2 个答案:

答案 0 :(得分:2)

你几乎回答了自己的问题。 Android Geocoder类可用于执行地理编码和反向地理编码。地址到latlon的转换称为地理编码; latlon到地址转换(如您的示例中所示)称为反向地理编码。我已修改您的示例以使用英国邮政编码显示地理编码示例:

    Geocoder geoCoder = new Geocoder(getActivity(), Locale.getDefault());
    List<Address> address = null;

    if (geoCoder != null) {
        try {
            address = geoCoder.getFromLocationName("KT48LY", 10);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        if (address.size() > 0) {
            Address first = address.get(0);
            double lat = first.getLatitude();
            double lon = first.getLongitude();
        }
    }

答案 1 :(得分:0)

不幸的是,Geocoder只是一个门面。实现取决于设备,而不是强制性的。如果Google自己的Geocoder服务是后端,getFromLocationName方法可能足够可靠,同时将邮政编码和国家/地区的组合指定为查询字符串,例如:

10007, USA

如果这对您不起作用,您可以使用GeoNames.org中的地理位置数据库。我刚刚尝试了一个基于邮政编码和国家/地区名称的查询,并从中获得了正确的结果。

GeoNames有一个支持JSON和XML数据的Web服务API,它们还为不同编程语言的各种客户端库提供下载链接。