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