Java地理编码 - 将纬度和经度转换为地址

时间:2014-02-13 06:43:19

标签: java android google-geocoder

我的Android应用程序需要我的汽车所在城市的名称。

我有纬度和经度,想要在地址中使用地理编码器转换它,并希望获得这个城市。

我读了一些街区,但因为我是新手,所以我不明白这一点。

任何人都可以帮我解决这个问题吗?

修改

我不在我的应用中使用此地理编码。我想在我的Java Web服务中使用它,我想我必须使用HTTPRequest,是吗?和谷歌api网址。

1 个答案:

答案 0 :(得分:0)

您要找的是Reverse Geocoding

Geocoder课程可以帮助您完成所需(取自here):

public static void getAddressFromLocation(
        final Location location, final Context context, final Handler handler) {
    Thread thread = new Thread() {
        @Override public void run() {
            Geocoder geocoder = new Geocoder(context, Locale.getDefault());   
            String result = null;
            try {
                List<Address> list = geocoder.getFromLocation(
                        location.getLatitude(), location.getLongitude(), 1);
                if (list != null && list.size() > 0) {
                    Address address = list.get(0);
                    // sending back first address line and locality
                    result = address.getAddressLine(0) + ", " + address.getLocality();
                }
            } catch (IOException e) {
                Log.e(TAG, "Impossible to connect to Geocoder", e);
            } finally {
                Message msg = Message.obtain();
                msg.setTarget(handler);
                if (result != null) {
                    msg.what = 1;
                    Bundle bundle = new Bundle();
                    bundle.putString("address", result);
                    msg.setData(bundle);
                } else 
                    msg.what = 0;
                msg.sendToTarget();
            }
        }
    };
    thread.start();
}

编辑:根据您的评论,然后不,您不能在普通的Java Web服务上使用Geocoder类。话虽如此,还有其他选择。 Google Geocoding API通常是一个很好的起点,据说,他们似乎确实有limits

或者,您可以查看Nominatim这是一个开源的反向地理编码服务,虽然与Google的服务相比,它似乎略有限制。