지오코딩 시 할당량 사용 최적화

지오코딩은 주소("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 정책

클라이언트 측 지오코딩을 사용하는 경우

간단히 말하자면 '거의 항상'입니다. 이유는 다음과 같습니다.

  • 클라이언트 측 요청과 응답은 보다 빠르고 쉬운 대화형 환경을 제공합니다.
  • 클라이언트 측 요청에는 지오코딩을 개선하는 정보가 포함될 수 있습니다. 품질: 사용자 언어, 지역, 표시 영역입니다.

특히 클라이언트 측 지오코딩은 주소를 지오코딩할 때 머신러닝 모델을 학습시킬 수 있습니다

클라이언트 측 지오코딩에는 두 가지 기본 아키텍처가 있습니다.

  • 브라우저에서 지오코딩과 디스플레이를 모두 처리합니다. 예를 들면 다음과 같습니다. 사용자가 페이지에 주소를 입력할 때 애플리케이션이 해당 주소를 지오코딩합니다. 그런 다음 페이지에서 지오코드를 사용하여 지도에 마커를 만듭니다. 또는 앱에서 몇 가지 간단한 분석을 수행했습니다. 서버에 데이터가 전송되지 않습니다. 따라서 서버의 부하가 줄어듭니다.
  • 브라우저에서 지오코딩을 수행한 다음 서버로 보냅니다. 예를 들어, 사용자가 페이지에 주소를 입력합니다. 애플리케이션 브라우저에서 지오코딩합니다. 그런 다음 앱이 데이터를 서버로 보냅니다. 이 서버에서 주변 관심 장소와 같은 일부 데이터로 응답합니다. 이 를 사용하면 자체 데이터를 기반으로 응답을 맞춤설정할 수 있습니다.

서버 측 지오코딩을 사용하는 경우

서버 측 지오코딩은 클라이언트에서 입력하지 않고 주소를 지오코딩해야 합니다. 일반적인 예 즉, 사용자 입력과는 별개로 제공되는 데이터 세트를 예를 들어 고정되고 유한하며 알려진 지오코딩이 필요한 주소를 만들 수 있습니다. 서버 측 지오코딩은 클라이언트 측 지오코딩이 실패할 때를 위한 백업으로도 유용합니다.

가능한 우려사항으로는 사용자 지연 시간이 불필요하게 늘어나거나 클라이언트 측에 비해 지오코딩 결과의 품질이 떨어지기 때문에 정보를 요청할 수 있습니다