В этом руководстве описывается несколько стратегий оптимизации использования API Google Карт с точки зрения безопасности, производительности и потребления.
Безопасность
Обзор лучших практик безопасности
API-ключи — это учетные данные, ориентированные на проект, которые заслуживают тех же мер предосторожности, что и идентификаторы пользователей и пароли. Ознакомьтесь с рекомендациями по безопасности API , чтобы защитить свои ключи от непреднамеренного использования, которое может привести к ненадлежащему использованию квоты и неожиданным списаниям с вашего счета.
Использование ключей API для доступа к API Карт
Ключи API являются предпочтительным методом аутентификации для доступа к API Google Maps. Хотя использование идентификаторов клиента все еще поддерживается, ключи API поддерживают более детальный контроль безопасности и могут быть настроены для работы с определенными веб-адресами, IP-адресами и мобильными SDK (Android и iOS). Для получения информации о создании и защите ключа API перейдите на страницу «Использование ключа API» для каждого API или SDK. (Например, для API JavaScript Maps посетите его страницу на странице Использование ключа API .)
Производительность
Использование экспоненциальной задержки для обработки ошибок
Если ваши приложения сталкиваются с ошибками из-за чрезмерных попыток вызвать API в течение короткого периода времени, например, с ошибками квоты, рассмотрите возможность использования экспоненциальной задержки , чтобы позволить запросам обрабатываться. Экспоненциальная задержка наиболее полезна для ошибок в 500-х.
В частности, отрегулируйте темп ваших запросов. В вашем коде добавьте период ожидания S
секунд между запросами. Если запрос все еще приводит к ошибке квоты, удвойте период ожидания, а затем отправьте еще один запрос. Продолжайте корректировать период ожидания, пока запрос не вернется без ошибки.
Отправка запросов на взаимодействие с пользователем по требованию
Запросы к API, включающие взаимодействие с пользователем, следует отправлять только по требованию. Это означает ожидание, пока конечный пользователь выполнит действие (например, on-click
), чтобы инициировать запрос API, а затем использование результатов для загрузки карты, установки пункта назначения или отображения соответствующей информации. Использование подхода по требованию позволяет избежать ненужных запросов к API, сокращая потребление API.
Избегание отображения наложенного контента при движении карты
Избегайте использования Draw()
для отображения пользовательского наложенного контента на карте в то же время, когда пользователь может перемещать карту. Поскольку карта перерисовывается каждый раз, когда пользователь перемещает карту, размещение наложенного контента на карте в то же время может привести к задержке или визуальному подтормаживанию. Добавляйте или удаляйте наложенный контент с карты только после того, как пользователь прекратит панорамирование или масштабирование.
Избегание интенсивных операций в методах Draw
Как правило, хорошей практикой является избегание ресурсоемких нерисуно-операций в методе Draw()
. Например, избегайте следующего в коде метода Draw()
:
- Запросы, возвращающие большой объем контента.
- Множество изменений в отображаемых данных.
- Манипулирование многими элементами модели объектов документа (DOM).
Эти операции могут снизить производительность и привести к задержкам или визуальному зависанию при отрисовке карты.
Использование растровых изображений для маркеров
Используйте растровые изображения, такие как изображения в формате .PNG или .JPG, при добавлении маркеров для идентификации местоположения на карте. Избегайте использования изображений Scalable Vector Graphics (SVG), поскольку рендеринг изображений SVG может привести к задержке при перерисовке карты.
Оптимизация маркеров
Оптимизация повышает производительность за счет визуализации множества маркеров как одного статического элемента. Это полезно в случаях, когда требуется большое количество маркеров. По умолчанию Maps JavaScript API решает, будет ли оптимизирован маркер. При большом количестве маркеров Maps JavaScript API попытается визуализировать маркеры с оптимизацией. Не все маркеры можно оптимизировать; в некоторых ситуациях Maps JavaScript API может потребоваться визуализировать маркеры без оптимизации. Отключите оптимизированную визуализацию для анимированных GIF-файлов или PNG-файлов или когда каждый маркер должен визуализироваться как отдельный элемент DOM.
Создание кластеров для управления отображением маркеров
Чтобы помочь управлять отображением маркеров для определения местоположений на карте, создайте кластер маркеров с помощью библиотеки Marker Clusterer . Библиотека Marker Clusterer включает опции для:
- Размер сетки, чтобы указать количество маркеров, группируемых в кластер.
- Максимальный масштаб, чтобы указать максимальный уровень масштабирования, при котором будет отображаться кластер.
- Пути к изображениям для графических изображений, используемых в качестве значков маркеров.
Потребление
Информацию об управлении расходами на платформу Google Карт, включая создание бюджетов, изменение квот и настройку оповещений, см. в разделе Управление расходами .