我想在Android中进行反向地理编码,有时会发现Geocoder不太可靠。所以我研究使用谷歌地理编码API。
我发现这种API有两种:client-side geocoding(JavaScript调用google.maps.Geocoder)和server-side geocoding(HTTP请求/ maps / api / geocode)。
似乎客户端地理编码通常是在浏览器中执行的最合适的方法,所以我认为它不适合Android。我是对的吗?
如果使用服务器端地理编码方法,Android会将http请求发送到maps / api / geocode。然后我需要将api密钥存储到远程服务器并在每次应用程序启动时请求它。这是最好的方法吗?有没有人这样做过?
===================================
另一个问题:我应该使用结合谷歌地图的地理编码结果吗?我可以在不显示地图的情况下将结果显示给最终用户吗?我应该遵循什么规则?
答案 0 :(得分:1)
Google提供了Geocoder
类来处理Android设备的地理编码和反向地理编码。您可以在本文https://developer.android.com/reference/android/location/Geocoder.html
Geocoder
课程
答案 1 :(得分:0)
JavaScript地理编码库并非完全是“客户端”,他们仍需要向Google发送RPC以获取地理编码结果。
您可以使用https://maps.googleapis.com/maps/api/geocode轻松地在Android应用中对Volley进行HTTP调用,然后解析JSON响应。
像(不完整的例子):
Listener<JSONObject> listener = new Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray("results");
if (jsonArray.length() > 0) {
JSONObject jsonObject = jsonArray.getJSONObject(0);
// Do something...
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
String url = "http://maps.googleapis.com/maps/api/geocode/json?sensor=true&latlng="
+ lat + "," + lng + "&key=" + API_KEY;
JsonObjectRequest request = new JsonObjectRequest(url, null, listener, errorListener);
mRequestQueue.add(request);