Android:反向地理编码 - getFromLocation
反向地理编码是指将地理坐标(经纬度)转换为人类可读的地址。在Android中,可以使用Google Maps API的Geocoding API进行反向地理编码。
以下是使用Geocoding API进行反向地理编码的示例代码:
private void getAddressFromLocation(final double latitude, final double longitude) {
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... params) {
String result = null;
try {
URL url = new URL("https://maps.googleapis.com/maps/api/geocode/json?latlng=" + latitude + "," + longitude + "&key=YOUR_API_KEY");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.connect();
InputStream inputStream = connection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
bufferedReader.close();
inputStream.close();
connection.disconnect();
JSONObject jsonObject = new JSONObject(stringBuilder.toString());
if (jsonObject.getString("status").equals("OK")) {
JSONArray results = jsonObject.getJSONArray("results");
JSONObject resultObject = results.getJSONObject(0);
result = resultObject.getString("formatted_address");
}
} catch (IOException | JSONException e) {
e.printStackTrace();
}
return result;
}
@Override
protected void onPostExecute(String address) {
super.onPostExecute(address);
if (address != null) {
// 使用获取到的地址
}
}
}.execute();
}
在上面的代码中,首先构造了一个URL,其中包含了经纬度和API密钥。然后,使用HttpURLConnection连接到Google Maps API,并从响应中读取JSON数据。最后,解析JSON数据并提取出人类可读的地址。
需要注意的是,使用Google Maps API进行反向地理编码需要API密钥。另外,Google Maps API有使用次数限制,如果需要大量使用,可能需要购买高级版本的API。
领取专属 10元无门槛券
手把手带您无忧上云