این راهنما چندین استراتژی را برای بهینهسازی استفاده از APIهای نقشههای گوگل از نظر امنیت، عملکرد و میزان مصرف شرح میدهد.
کلیدهای API، اعتبارنامههای پروژهمحوری هستند که نیازمند همان اقدامات احتیاطی مانند شناسههای کاربری و رمزهای عبور هستند. برای ایمنسازی کلیدهای خود در برابر استفاده ناخواسته که میتواند منجر به استفاده بیش از حد از سهمیه و هزینههای غیرمنتظره برای حساب شما شود، بهترین شیوههای امنیتی API را مرور کنید.
کلیدهای API روش احراز هویت ترجیحی برای دسترسی به APIهای نقشههای گوگل هستند. در حالی که استفاده از شناسههای کلاینت هنوز پشتیبانی میشود، کلیدهای API از کنترلهای امنیتی دقیقتری پشتیبانی میکنند و میتوانند برای کار با آدرسهای وب خاص، آدرسهای IP و SDKهای موبایل (اندروید و iOS) تنظیم شوند. برای کسب اطلاعات در مورد ایجاد و ایمنسازی یک کلید API، به صفحه "استفاده از کلید API" برای هر API یا SDK مراجعه کنید. (به عنوان مثال، برای API جاوا اسکریپت نقشهها، به صفحه آن در مورد استفاده از کلید API مراجعه کنید.)
اگر برنامههای شما به دلیل تلاشهای بیش از حد برای فراخوانی یک API در مدت زمان کوتاه، مانند خطاهای سهمیهبندی، با خطاهایی مواجه میشوند، استفاده از backoff نمایی را برای پردازش درخواستها در نظر بگیرید. backoff نمایی برای خطاهایی در حدود ۵۰۰ مورد مفید است.
به طور خاص، سرعت اجرای کوئریهای خود را تنظیم کنید. در کد خود، یک دوره انتظار S ثانیهای بین کوئریها اضافه کنید. اگر کوئری همچنان منجر به خطای سهمیهبندی شد، دوره انتظار را دو برابر کنید و سپس کوئری دیگری ارسال کنید. تنظیم دوره انتظار را تا زمانی که کوئری بدون خطا برگردد، ادامه دهید.
درخواستهایی که به APIها ارسال میشوند و شامل تعامل کاربر هستند، باید فقط بر اساس تقاضا ارسال شوند. این به معنای انتظار برای انجام عملی توسط کاربر نهایی (مانند on-click ) برای شروع درخواست API است، سپس از نتایج برای بارگذاری نقشه، تعیین مقصد یا نمایش اطلاعات مناسب استفاده میشود. استفاده از رویکرد بر اساس تقاضا، از درخواستهای غیرضروری به APIها جلوگیری میکند و مصرف API را کاهش میدهد.
از استفاده از Draw() برای نمایش محتوای پوششی سفارشی روی نقشه همزمان با حرکت دادن نقشه توسط کاربر خودداری کنید. از آنجایی که هر بار که کاربر نقشه را حرکت میدهد، نقشه دوباره ترسیم میشود، قرار دادن محتوای پوششی روی نقشه به طور همزمان میتواند باعث تأخیر یا لکنت بصری شود. فقط زمانی محتوای پوششی را از نقشه اضافه یا حذف کنید که کاربر حرکت افقی یا بزرگنمایی را متوقف کرده باشد.
Draw به عنوان یک قاعده کلی، بهتر است از عملیات غیر ترسیمی با عملکرد بالا در متد Draw() خودداری کنید. به عنوان مثال، از موارد زیر در کد متد Draw() خود اجتناب کنید:
- کوئریهایی که حجم زیادی از محتوا را برمیگردانند.
- تغییرات زیادی در دادههای نمایش داده شده ایجاد شده است.
- دستکاری بسیاری از عناصر مدل شیء سند (DOM).
این عملیات میتوانند عملکرد را کند کرده و هنگام رندر نقشه، تأخیر یا لکنت بصری ایجاد کنند.
هنگام افزودن نشانگرها برای شناسایی مکان روی نقشه، از تصاویر رستری، مانند تصاویر با فرمت .PNG یا .JPG، استفاده کنید. از تصاویر گرافیک برداری مقیاسپذیر (SVG) استفاده نکنید، زیرا رندر تصاویر SVG میتواند هنگام ترسیم مجدد نقشه باعث ایجاد تأخیر شود.
بهینهسازی با رندر کردن بسیاری از نشانگرها به عنوان یک عنصر استاتیک واحد، عملکرد را افزایش میدهد. این در مواردی که تعداد زیادی نشانگر مورد نیاز است، مفید است. به طور پیشفرض، API Maps JavaScript تصمیم میگیرد که آیا یک نشانگر بهینهسازی شود یا خیر. وقتی تعداد زیادی نشانگر وجود دارد، API Maps JavaScript سعی میکند نشانگرها را با بهینهسازی رندر کند. همه نشانگرها را نمیتوان بهینهسازی کرد. در برخی شرایط، API Maps JavaScript ممکن است نیاز داشته باشد نشانگرها را بدون بهینهسازی رندر کند. رندر بهینه را برای GIFها یا PNGهای متحرک غیرفعال کنید، یا زمانی که هر نشانگر باید به عنوان یک عنصر DOM جداگانه رندر شود.
برای کمک به مدیریت نمایش نشانگرها برای شناسایی مکانها روی نقشه، با استفاده از کتابخانه Marker Clusterer یک خوشه نشانگر ایجاد کنید. کتابخانه Marker Clusterer شامل گزینههایی برای موارد زیر است:
- اندازه شبکه، برای مشخص کردن تعداد نشانگرهایی که باید در یک خوشه گروهبندی شوند.
- حداکثر بزرگنمایی، برای مشخص کردن حداکثر سطح بزرگنمایی که خوشه در آن نمایش داده میشود.
- مسیرهای تصویر، برای استفاده از تصاویر گرافیکی به عنوان نمادهای نشانگر.
برای اطلاعات بیشتر در مورد مدیریت هزینههای پلتفرم نقشههای گوگل، از جمله ایجاد بودجه، تغییر سهمیهها و تنظیم هشدارها، به مدیریت هزینهها مراجعه کنید.