2017-11-23 4 views
0

Android에서 역 지오 코딩을 수행하고 싶고 때로는 Geocoder이 신뢰할 만하지 않습니다. 그래서 Google 지오 코딩 API를 사용하기 위해 조사했습니다.Android에서 역 지오 코딩을 수행하는 가장 좋은 방법은 무엇입니까?

이러한 API에는 client-side geocoding (google.maps.Geocoder로 자바 스크립트 호출)과 server-side geocoding (/ maps/api/geocode에 대한 HTTP 요청)이라는 두 가지 API가 있습니다.

브라우저에서 실행될 때 클라이언트 측 지오 코딩이 일반적으로 가장 적합한 방법 인 것으로 보이므로 안드로이드에 적합하지 않다고 생각합니다. 내가 맞습니까?

서버 측 지오 코딩 접근법을 사용하는 경우 Android는 http 요청을 maps/api/geocode로 보냅니다. 그런 다음 원격 서버에 api 키를 저장하고 앱이 시작될 때마다 요청해야합니다. 그렇게하는 것이 가장 좋은 방법입니까? 어떤 사람이 그렇게 했습니까?

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

또 다른 질문 : 내가 사용한다 Google지도와 결합 된 지오 코딩 결과? 지도를 표시하지 않고 최종 사용자에게 결과를 표시 할 수 있습니까? 어떤 규칙을 따라야합니까?

+1

이 http://maps.googleapis.com/maps/api/geocode/json?latlng=32,75&sensor=true –

답변

0

JavaScript 지오 코딩 라이브러리는 전적으로 "클라이언트 측"이 아니며 지오 코드 결과를 얻으려면 여전히 Google에 RPC를 작성해야합니다.

Volley을 사용하여 Android 앱 내에서 https://maps.googleapis.com/maps/api/geocode으로 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);