지오코딩은 주소("1600 Amphitheatre Parkway, Mountain View, CA')에서 지리 좌표로 (37.423021, -122.083739)을 사용하여 지도에 위치를 지정할 수 있습니다. Google Maps Platform API에서는 두 가지 기능을 제공합니다. 접근 방식:
- 클라이언트 측 지오코딩 이는 브라우저에서 실행되며, 일반적으로 사용자 액션에 대한 응답입니다. Maps JavaScript API는 해당 클래스를 만듭니다. 이 접근 방식은 Maps JavaScript API 문서를 참조하세요.
- HTTP 서버 측 지오코딩 이 쿼리를 통해 서버가 지오코드용 Google 서버 Geocoding API는 웹입니다 API를 제공합니다. 일반적으로 이 API를 서버 측에서 실행 중인 다른 코드와 함께 사용할 수 있습니다 서버 측 지오코딩 자세한 내용은 지오코딩 API 문서를 참조하세요.
클라이언트 측 지오코딩과 서버 측 지오코딩의 예시
다음은 클라이언트 측 지오코딩의 샘플입니다. 주소를 지오코딩하고, 지도의 중심을 해당 위치로 이동하고, 지도 마커:
geocoder = new google.maps.Geocoder(); geocoder.geocode({ 'address': address }, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { map.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); } });
더 많은 예는 Maps JavaScript API 문서를 참조하세요.
다음은 Python을 사용하여 서버 측 요청을 수행하는 예입니다. 지오코딩 요청을 사용합니다.
import urllib2 address="1600+Amphitheatre+Parkway,+Mountain+View,+CA" key="my-key-here" url="https://maps.googleapis.com/maps/api/geocode/json?address=%s&key=%s" % (address, key) response = urllib2.urlopen(url) jsongeocode = response.read()
이는 다음과 같은 콘텐츠를 포함하는 JSON 객체를 생성합니다.
{ "status": "OK", "results": [ { "types": street_address, "formatted_address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", "address_components": [ { "long_name": "1600", "short_name": "1600", "types": street_number }, { "long_name": "Amphitheatre Pkwy", "short_name": "Amphitheatre Pkwy", "types": route }, { "long_name": "Mountain View", "short_name": "Mountain View", "types": [ "locality", "political" ] }, { "long_name": "San Jose", "short_name": "San Jose", "types": [ "administrative_area_level_3", "political" ] }, { "long_name": "Santa Clara", "short_name": "Santa Clara", "types": [ "administrative_area_level_2", "political" ] }, { "long_name": "California", "short_name": "CA", "types": [ "administrative_area_level_1", "political" ] }, { "long_name": "United States", "short_name": "US", "types": [ "country", "political" ] }, { "long_name": "94043", "short_name": "94043", "types": postal_code } ], "geometry": { "location": { "lat": 37.4220323, "lng": -122.0845109 }, "location_type": "ROOFTOP", "viewport": { "southwest": { "lat": 37.4188847, "lng": -122.0876585 }, "northeast": { "lat": 37.4251799, "lng": -122.0813633 } } } } ] }
서버 측 지오코더는 또한 JSON입니다. 더 많은 예는 지오코딩 API 문서 및 Python용 클라이언트 라이브러리 사용할 수 있습니다
할당량 및 비용 고려사항
지오코딩 비용, 할당량 및 비율 제한은 문서를 참조하세요.
비용
<ph type="x-smartling-placeholder"></ph> 일일 할당량 (QPD) 한도는 더 이상 지오코딩 요청에 사용되지 않습니다. 대신 각 지오코딩 요청은 브라우저를 통한 클라이언트 측 또는 Geocoding API 웹 서비스로 각 통화로 청구됩니다. 사용 비용을 관리하려면 일일 할당량 제한하기
비율 제한
지오코딩 서비스는 속도가 3,000 QPM (분당 쿼리)으로 제한되며 클라이언트 측 쿼리와 서버 측 쿼리의 합계로 계산됩니다.
주기적으로 클라이언트 측 지오코딩 요청을 실행하는 경우(예: 모바일 앱에서는 모든 사용자가 모든 요청을 동시에 수행할 수 있습니다 (예를 들어 모든 분) 이를 피하려면 다음 중 하나를 고려합니다.
- 요청에 랜덤 간격(지터)을 적용합니다. 요청이 있는지 확인 전체 사용자층에서 랜덤으로 설정하세요
- Android용으로 개발하는 경우 부정확한 반복 알람을 탭합니다.
- Android용으로 개발하는 경우 적절한 위치를 선택합니다. 전략을 따라야 합니다.
캐싱
자세한 내용은 <ph type="x-smartling-placeholder"></ph> 캐싱에 대한 Geocoding API 정책
클라이언트 측 지오코딩을 사용하는 경우
간단히 말하자면 '거의 항상'입니다. 이유는 다음과 같습니다.
- 클라이언트 측 요청과 응답은 보다 빠르고 쉬운 대화형 환경을 제공합니다.
- 클라이언트 측 요청에는 지오코딩을 개선하는 정보가 포함될 수 있습니다. 품질: 사용자 언어, 지역, 표시 영역입니다.
특히 클라이언트 측 지오코딩은 주소를 지오코딩할 때 머신러닝 모델을 학습시킬 수 있습니다
클라이언트 측 지오코딩에는 두 가지 기본 아키텍처가 있습니다.
- 브라우저에서 지오코딩과 디스플레이를 모두 처리합니다. 예를 들면 다음과 같습니다. 사용자가 페이지에 주소를 입력할 때 애플리케이션이 해당 주소를 지오코딩합니다. 그런 다음 페이지에서 지오코드를 사용하여 지도에 마커를 만듭니다. 또는 앱에서 몇 가지 간단한 분석을 수행했습니다. 서버에 데이터가 전송되지 않습니다. 따라서 서버의 부하가 줄어듭니다.
- 브라우저에서 지오코딩을 수행한 다음 서버로 보냅니다. 예를 들어, 사용자가 페이지에 주소를 입력합니다. 애플리케이션 브라우저에서 지오코딩합니다. 그런 다음 앱이 데이터를 서버로 보냅니다. 이 서버에서 주변 관심 장소와 같은 일부 데이터로 응답합니다. 이 를 사용하면 자체 데이터를 기반으로 응답을 맞춤설정할 수 있습니다.
서버 측 지오코딩을 사용하는 경우
서버 측 지오코딩은 클라이언트에서 입력하지 않고 주소를 지오코딩해야 합니다. 일반적인 예 즉, 사용자 입력과는 별개로 제공되는 데이터 세트를 예를 들어 고정되고 유한하며 알려진 지오코딩이 필요한 주소를 만들 수 있습니다. 서버 측 지오코딩은 클라이언트 측 지오코딩이 실패할 때를 위한 백업으로도 유용합니다.
가능한 우려사항으로는 사용자 지연 시간이 불필요하게 늘어나거나 클라이언트 측에 비해 지오코딩 결과의 품질이 떨어지기 때문에 정보를 요청할 수 있습니다