지오코딩은 주소("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
문서를 참조하세요.
클라이언트 측 지오코딩과 서버 측 지오코딩의 예시
다음은 클라이언트 측 지오코딩의 샘플입니다.
주소를 지오코딩하고, 지도의 중심을 해당 위치로 이동하고,
지도 마커:
클라이언트 측 요청에는 지오코딩을 개선하는 정보가 포함될 수 있습니다.
품질: 사용자 언어, 지역, 표시 영역입니다.
특히 클라이언트 측 지오코딩은 주소를 지오코딩할 때
머신러닝 모델을 학습시킬 수 있습니다
클라이언트 측 지오코딩에는 두 가지 기본 아키텍처가 있습니다.
브라우저에서 지오코딩과 디스플레이를 모두 처리합니다. 예를 들면 다음과 같습니다.
사용자가 페이지에 주소를 입력할 때 애플리케이션이 해당 주소를 지오코딩합니다. 그런 다음
페이지에서 지오코드를 사용하여 지도에 마커를 만듭니다. 또는 앱에서
몇 가지 간단한 분석을 수행했습니다. 서버에 데이터가 전송되지 않습니다.
따라서 서버의 부하가 줄어듭니다.
브라우저에서 지오코딩을 수행한 다음 서버로 보냅니다.
예를 들어, 사용자가 페이지에 주소를 입력합니다. 애플리케이션
브라우저에서 지오코딩합니다. 그런 다음 앱이 데이터를 서버로 보냅니다. 이
서버에서 주변 관심 장소와 같은 일부 데이터로 응답합니다. 이
를 사용하면 자체 데이터를 기반으로 응답을 맞춤설정할 수 있습니다.
서버 측 지오코딩을 사용하는 경우
서버 측 지오코딩은
클라이언트에서 입력하지 않고 주소를 지오코딩해야 합니다. 일반적인 예
즉, 사용자 입력과는 별개로
제공되는 데이터 세트를
예를 들어 고정되고 유한하며 알려진
지오코딩이 필요한 주소를 만들 수 있습니다. 서버 측 지오코딩은
클라이언트 측 지오코딩이 실패할 때를 위한 백업으로도 유용합니다.
가능한 우려사항으로는 사용자 지연 시간이 불필요하게 늘어나거나
클라이언트 측에 비해 지오코딩 결과의 품질이 떨어지기 때문에
정보를 요청할 수 있습니다
[null,null,["최종 업데이트: 2025-08-31(UTC)"],[[["\u003cp\u003eGeocoding transforms addresses into geographic coordinates for map placement, offered through client-side (browser-based) and server-side (HTTP) approaches by the Google Maps Platform.\u003c/p\u003e\n"],["\u003cp\u003eClient-side geocoding, ideal for user-input addresses, provides a faster experience and leverages user context for improved accuracy.\u003c/p\u003e\n"],["\u003cp\u003eServer-side geocoding is suitable for geocoding pre-defined address datasets or as a fallback when client-side geocoding fails.\u003c/p\u003e\n"],["\u003cp\u003eGoogle Maps Platform's geocoding service is rate limited to 3,000 queries per minute, and each request is billed individually.\u003c/p\u003e\n"],["\u003cp\u003eConsider caching, request staggering, or inexact repeating alarms to manage costs and avoid rate limits, especially in high-frequency scenarios.\u003c/p\u003e\n"]]],["Geocoding converts addresses to geographic coordinates. Google Maps offers client-side (browser-based) and server-side (direct server queries) approaches. Client-side geocoding, preferred for user input, utilizes the Maps JavaScript API, as seen in the provided JavaScript example. Server-side geocoding, via the Geocoding API, is ideal for pre-existing datasets or as a client-side backup, and shown in the Python example that return a JSON format. Geocoding is rate-limited to 3,000 queries per minute and incurs a per-request cost.\n"],null,["Geocoding is the process of converting addresses (\"1600\nAmphitheatre Parkway, Mountain View, CA\") to geographic coordinates\n(37.423021, -122.083739), which you can use to place\nmarkers or position the map. The Google Maps Platform APIs provide two\napproaches to geocoding:\n\n- **Client-side geocoding** , which is executed in the browser, generally in response to user action. The Maps JavaScript API provides classes that make the requests for you. This approach is described in the [Maps JavaScript API\n documentation](/maps/documentation/javascript/geocoding).\n- **HTTP server-side geocoding** , which allows your server to directly query Google's servers for geocodes. The Geocoding API is the web service that provides this functionality. Typically, you integrate this service with other code that is running server-side. Server-side geocoding is described in the [Geocoding API\n documentation](/maps/documentation/geocoding).\n\nExamples of client-side and server-side geocoding\n\nHere is a sample of **client-side geocoding** which takes an\naddress, geocodes it, moves the center of the map to that location, and adds a\nmap marker there: \n\n```javascript\ngeocoder = new google.maps.Geocoder();\ngeocoder.geocode({ 'address': address }, function(results, status) {\n if (status == google.maps.GeocoderStatus.OK) {\n map.setCenter(results[0].geometry.location);\n var marker = new google.maps.Marker({\n map: map,\n position: results[0].geometry.location\n });\n }\n});\n```\n\nFor more examples, see the\n[Maps JavaScript API\ndocumentation](/maps/documentation/javascript/geocoding).\n\nHere is an example using Python to do a **server-side\ngeocoding** request: \n\n```python\nimport urllib2\n\naddress=\"1600+Amphitheatre+Parkway,+Mountain+View,+CA\"\nkey=\"my-key-here\"\nurl=\"https://maps.googleapis.com/maps/api/geocode/json?address=%s&key=%s\" % (address, key)\n\nresponse = urllib2.urlopen(url)\n\njsongeocode = response.read()\n```\n\nThis produces a JSON object with the following content: \n\n```javascript\n{\n \"status\": \"OK\",\n \"results\": [ {\n \"types\": street_address,\n \"formatted_address\": \"1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA\",\n \"address_components\": [ {\n \"long_name\": \"1600\",\n \"short_name\": \"1600\",\n \"types\": street_number\n }, {\n \"long_name\": \"Amphitheatre Pkwy\",\n \"short_name\": \"Amphitheatre Pkwy\",\n \"types\": route\n }, {\n \"long_name\": \"Mountain View\",\n \"short_name\": \"Mountain View\",\n \"types\": [ \"locality\", \"political\" ]\n }, {\n \"long_name\": \"San Jose\",\n \"short_name\": \"San Jose\",\n \"types\": [ \"administrative_area_level_3\", \"political\" ]\n }, {\n \"long_name\": \"Santa Clara\",\n \"short_name\": \"Santa Clara\",\n \"types\": [ \"administrative_area_level_2\", \"political\" ]\n }, {\n \"long_name\": \"California\",\n \"short_name\": \"CA\",\n \"types\": [ \"administrative_area_level_1\", \"political\" ]\n }, {\n \"long_name\": \"United States\",\n \"short_name\": \"US\",\n \"types\": [ \"country\", \"political\" ]\n }, {\n \"long_name\": \"94043\",\n \"short_name\": \"94043\",\n \"types\": postal_code\n } ],\n \"geometry\": {\n \"location\": {\n \"lat\": 37.4220323,\n \"lng\": -122.0845109\n },\n \"location_type\": \"ROOFTOP\",\n \"viewport\": {\n \"southwest\": {\n \"lat\": 37.4188847,\n \"lng\": -122.0876585\n },\n \"northeast\": {\n \"lat\": 37.4251799,\n \"lng\": -122.0813633\n }\n }\n }\n } ]\n}\n```\n\nThe server-side geocoder also provides an XML format as an alternative to\nJSON. For more examples, see the\n[Geocoding API\ndocumentation](/maps/documentation/geocoding) and the\n[client libraries](/maps/documentation/geocoding/client-library) for Python\nand other languages.\n\nQuota and cost considerations\n\nGeocoding costs, quotas, and rate limits drive the strategies outlined in this\ndocument.\n\nCost\n\n\n[Quota-per-day (QPD) limits are no longer in use](/maps/documentation/geocoding/usage-and-billing#requests-per-day-qpd-limits-have-ended-effective-june-11-2018) for geocoding requests.\nInstead, each geocoding request, whether client-side through the browser or server-side through the\nGeocoding API web service, is\n[billed at a per-each price](/maps/documentation/geocoding/usage-and-billing#new-payg).\nTo manage your cost of use, consider\n[capping your daily quota](/maps/documentation/geocoding/usage-and-billing#set-caps).\n| **Important:** To use the Google Maps Platform APIs, you must [enable billing](/maps/documentation/geocoding/usage-and-billing#important-enable-billing) on each of your projects. If you choose not to add a billing account, your maps will be degraded, or other Maps API requests will return an error.\n\nRate limits\n\nThe geocoding service is rate limited to 3,000 QPM (queries per minute),\ncalculated as the sum of client-side and server-side queries.\n\nWhen running client-side geocoding requests at periodic intervals, such as\nin a mobile app, your requests may return errors if all of your users are\nmaking requests at the same time (for example, all at the same second of every\nminute). To avoid this, consider one of the following:\n\n- Introduce random intervals to your requests (jitter). Ensure requests are random across your entire userbase.\n- If developing for Android, use an [inexact\n repeating alarm](https://developer.android.com/develop/background-work/services/alarms/schedule#repeating).\n- If developing for Android, select an appropriate [location\n strategy](https://developer.android.com/training/location/retrieve-current).\n\nCaching\n\nSee\n[Geocoding API Policies](/maps/documentation/geocoding/policies#pre-fetching-caching-or-storage-of-content) about caching.\n\nWhen to use client-side geocoding\n\nThe short answer is \"almost always.\" The reasons are:\n\n- Client-side request and response provide a faster, more interactive experience for users.\n- A client-side request can include information that improves geocoding quality: user language, region, and viewport.\n\nIn particular, client-side geocoding is best when geocoding addresses\nbased on input from the user.\n\nThere are two basic architectures for client-side geocoding:\n\n- Do the geocoding and the display entirely in the browser. For instance, the user enters an address on your page. Your application geocodes it. Then your page uses the geocode to create a marker on the map. Or your app does some simple analysis using the geocode. No data is sent to your server. This reduces load on your server.\n- Do the geocoding in the browser and then send it to the server. For instance, the user enters an address on your page. Your application geocodes it in the browser. The app then sends the data to your server. The server responds with some data, such as nearby points of interest. This allows you to customize a response based on your own data.\n\nWhen to use server-side geocoding\n\nServer-side geocoding is best used for applications that\nrequire you to geocode addresses without input from a client. A common example\nis when you get a dataset that comes independently of user input,\nfor instance if you have a fixed, finite, and known set of\naddresses that need geocoding. Server-side geocoding can\nalso be useful as a backup for when client-side geocoding fails.\n\nSome possible concerns are an unnecessary increase in latency for the user,\nand geocoding results of a lesser quality than client-side because less\ninformation is available in the request."]]