在Android中进行反向地理编码的最佳方法是什么?

时间:2017-11-23 03:28:28

标签: android google-maps reverse-geocoding

我想在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密钥存储到远程服务器并在每次应用程序启动时请求它。这是最好的方法吗?有没有人这样做过?

===================================

另一个问题:我应该使用结合谷歌地图的地理编码结果吗?我可以在不显示地图的情况下将结果显示给最终用户吗?我应该遵循什么规则?

2 个答案:

答案 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);