بهینه سازی استفاده از سهمیه هنگام کدگذاری جغرافیایی
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
ژئوکدینگ فرآیند تبدیل آدرس ها ("1600 Amphitheatre Parkway, Mountain View, CA") به مختصات جغرافیایی (37.423021، -122.083739) است که می توانید از آنها برای قرار دادن نشانگرها یا موقعیت نقشه استفاده کنید. API های پلتفرم نقشه های گوگل دو رویکرد برای کدگذاری جغرافیایی ارائه می دهند:
geocoding سمت کلاینت ، که در مرورگر اجرا می شود، به طور کلی در پاسخ به عملکرد کاربر. Maps JavaScript API کلاس هایی را ارائه می دهد که درخواست ها را برای شما ارسال می کنند. این رویکرد در مستندات Maps JavaScript API توضیح داده شده است.
کدگذاری جغرافیایی سمت سرور HTTP ، که به سرور شما اجازه میدهد مستقیماً از سرورهای Google برای ژئوکدها پرس و جو کند. Geocoding API سرویس وب است که این قابلیت را ارائه می دهد. به طور معمول، شما این سرویس را با کدهای دیگری که در سمت سرور اجرا می شوند، ادغام می کنید. ژئوکدینگ سمت سرور در مستندات Geocoding API توضیح داده شده است.
نمونه هایی از کدگذاری جغرافیایی سمت مشتری و سمت سرور
در اینجا نمونه ای از کدگذاری جغرافیایی سمت مشتری است که آدرسی را می گیرد، آن را ژئوکد می کند، مرکز نقشه را به آن مکان منتقل می کند و نشانگر نقشه را در آنجا اضافه می کند:
geocoder سمت سرور همچنین یک فرمت XML را به عنوان جایگزینی برای JSON ارائه می دهد. برای مثالهای بیشتر، به مستندات API Geocoding و کتابخانههای سرویس گیرنده پایتون و سایر زبانها مراجعه کنید.
ملاحظات سهمیه و هزینه
هزینههای کدگذاری جغرافیایی، سهمیهها و محدودیتهای نرخ، استراتژیهای ذکر شده در این سند را هدایت میکنند.
نرخ سرویس کدگذاری جغرافیایی محدود به 3000 QPM (پرس و جو در دقیقه) است که به عنوان مجموع پرس و جوهای سمت مشتری و سمت سرور محاسبه می شود.
هنگام اجرای درخواستهای کدگذاری جغرافیایی سمت کلاینت در فواصل زمانی متناوب، مثلاً در یک برنامه تلفن همراه، اگر همه کاربران شما در یک زمان درخواستی را انجام دهند (مثلاً همه در یک ثانیه در هر دقیقه) ممکن است درخواستهای شما با خطا مواجه شود. برای جلوگیری از این امر، یکی از موارد زیر را در نظر بگیرید:
فواصل تصادفی را به درخواست های خود معرفی کنید (جتر). اطمینان حاصل کنید که درخواست ها در کل پایگاه کاربری شما تصادفی هستند.
درخواست و پاسخ سمت مشتری تجربه سریعتر و تعاملی بیشتری را برای کاربران فراهم می کند.
یک درخواست سمت کلاینت می تواند شامل اطلاعاتی باشد که کیفیت کدگذاری جغرافیایی را بهبود می بخشد: زبان کاربر، منطقه و درگاه دید.
به طور خاص، زمانی که آدرسها را بر اساس ورودی کاربر کدگذاری جغرافیایی میکند، کد جغرافیایی سمت مشتری بهترین است.
دو معماری اساسی برای ژئوکدینگ سمت مشتری وجود دارد:
ژئوکدینگ و نمایش را به طور کامل در مرورگر انجام دهید. به عنوان مثال، کاربر آدرسی را در صفحه شما وارد می کند. برنامه شما آن را ژئوکد می کند. سپس صفحه شما از ژئوکد برای ایجاد یک نشانگر روی نقشه استفاده می کند. یا برنامه شما با استفاده از ژئوکد تجزیه و تحلیل ساده ای انجام می دهد. هیچ داده ای به سرور شما ارسال نمی شود. این باعث کاهش بار روی سرور شما می شود.
geocoding را در مرورگر انجام دهید و سپس آن را به سرور ارسال کنید. به عنوان مثال، کاربر آدرسی را در صفحه شما وارد می کند. برنامه شما آن را در مرورگر جغرافیایی کد می کند. سپس برنامه داده ها را به سرور شما ارسال می کند. سرور با برخی از داده ها مانند نقاط مورد علاقه نزدیک پاسخ می دهد. این به شما امکان می دهد پاسخ را بر اساس داده های خود سفارشی کنید.
چه زمانی باید از کدگذاری جغرافیایی سمت سرور استفاده کرد
ژئوکدینگ سمت سرور برای برنامههایی که نیاز به ژئوکد کردن آدرسها بدون ورودی مشتری دارند، بهترین استفاده است. یک مثال رایج زمانی است که مجموعه دادهای را دریافت میکنید که مستقل از ورودی کاربر میآید، برای مثال اگر مجموعهای از آدرسهای ثابت، محدود و شناختهشده دارید که نیاز به کدگذاری جغرافیایی دارند. رمزگذاری جغرافیایی سمت سرور همچنین می تواند به عنوان یک پشتیبان برای زمانی که کد جغرافیایی سمت سرویس گیرنده با شکست مواجه می شود مفید باشد.
برخی از نگرانی های احتمالی افزایش غیرضروری تاخیر برای کاربر و نتایج کدگذاری جغرافیایی با کیفیت کمتری نسبت به سمت مشتری است زیرا اطلاعات کمتری در درخواست موجود است.
تاریخ آخرین بهروزرسانی 2025-08-29 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2025-08-29 بهوقت ساعت هماهنگ جهانی."],[[["\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."]]