我的Android应用程序需要我的汽车所在城市的名称。
我有纬度和经度,想要在地址中使用地理编码器转换它,并希望获得这个城市。
我读了一些街区,但因为我是新手,所以我不明白这一点。
任何人都可以帮我解决这个问题吗?
修改
我不在我的应用中使用此地理编码。我想在我的Java Web服务中使用它,我想我必须使用HTTPRequest,是吗?和谷歌api网址。
答案 0 :(得分:0)
您要找的是Reverse Geocoding
。
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的服务相比,它似乎略有限制。