Руководство по оптимизации

В этом руководстве описаны несколько стратегий для оптимизации использования API Google Maps с точки зрения безопасности, производительности и потребления ресурсов.

Безопасность

Анализ передовых методов обеспечения безопасности

Ключи API — это учетные данные, ориентированные на проект, и к ним следует относиться с той же осторожностью, что и к идентификаторам пользователей и паролям. Ознакомьтесь с рекомендациями по обеспечению безопасности API , чтобы защитить свои ключи от непреднамеренного использования, которое может привести к чрезмерному использованию квоты и неожиданным списаниям средств с вашего счета.

Использование ключей API для доступа к API карт.

Ключи API являются предпочтительным методом аутентификации для доступа к API Google Maps. Хотя использование идентификаторов клиентов по-прежнему поддерживается, ключи API обеспечивают более детальный контроль безопасности и могут быть настроены для работы с конкретными веб-адресами, IP-адресами и мобильными SDK (Android и iOS). Информацию о создании и защите ключа API можно найти на странице «Использование ключа API» для каждого API или SDK. (Например, для API Google Maps JavaScript посетите страницу « Использование ключа API» .)

Производительность

Использование экспоненциальной задержки для обработки ошибок

Если в ваших приложениях возникают ошибки из-за чрезмерного количества попыток вызова API в течение короткого промежутка времени, например, ошибки квоты, рассмотрите возможность использования экспоненциальной задержки , чтобы позволить запросам обрабатываться. Экспоненциальная задержка наиболее полезна для ошибок в диапазоне 500.

В частности, отрегулируйте частоту запросов. В коде добавьте период ожидания в S секунд между запросами. Если запрос по-прежнему приводит к ошибке квоты, удвойте период ожидания, а затем отправьте еще один запрос. Продолжайте регулировать период ожидания, пока запрос не вернется без ошибок.

Отправка запросов на взаимодействие с пользователем по требованию.

Запросы к API, включающие взаимодействие с пользователем, следует отправлять только по запросу. Это означает ожидание выполнения пользователем какого-либо действия (например on-click ) для инициирования запроса к API, а затем использование результатов для загрузки карты, установки пункта назначения или отображения соответствующей информации. Использование подхода «по запросу» позволяет избежать ненужных запросов к API, снижая потребление ресурсов API.

Предотвращение отображения наложенного контента при движении карты.

Избегайте использования Draw() для отображения пользовательского наложенного контента на карте одновременно с перемещением карты пользователем. Поскольку карта перерисовывается каждый раз, когда пользователь перемещает её, одновременное размещение наложенного контента может привести к задержкам или визуальным рывкам. Добавляйте или удаляйте наложенный контент с карты только после того, как пользователь прекратит панорамирование или масштабирование.

Избегайте ресурсоемких операций в методах Draw .

Как правило, рекомендуется избегать ресурсоемких операций, не связанных с отрисовкой, в методе Draw() . Например, в коде метода Draw() следует избегать следующего:

  • Запросы, возвращающие большой объем контента.
  • В отображаемые данные внесены многочисленные изменения.
  • Манипулирование множеством элементов объектной модели документа (DOM).

Эти операции могут замедлить работу системы и вызвать задержки или визуальные рывки при отрисовке карты.

Использование растровых изображений в качестве маркеров

При добавлении маркеров для обозначения местоположения на карте используйте растровые изображения, например, в формате .PNG или .JPG. Избегайте использования масштабируемых векторных графических изображений (SVG), поскольку их рендеринг может вызывать задержки при перерисовке карты.

Оптимизация маркеров

Оптимизация повышает производительность за счет отображения множества маркеров как единого статического элемента. Это полезно в случаях, когда требуется большое количество маркеров. По умолчанию API JavaScript для карт определяет, будет ли маркер оптимизирован. При большом количестве маркеров API JavaScript для карт попытается отобразить их с оптимизацией. Не все маркеры могут быть оптимизированы; в некоторых ситуациях API JavaScript для карт может потребоваться отобразить маркеры без оптимизации. Отключите оптимизированное отображение для анимированных GIF-файлов или PNG-файлов, а также когда каждый маркер должен отображаться как отдельный элемент DOM.

Создание кластеров для управления отображением маркеров

Для управления отображением маркеров, идентифицирующих местоположения на карте, создайте кластер маркеров с помощью библиотеки Marker Clusterer . Библиотека Marker Clusterer включает в себя следующие параметры:

  • Размер сетки, указывающий количество маркеров, которые следует сгруппировать в кластер.
  • Максимальный масштаб — для указания максимального уровня масштабирования, при котором будет отображаться кластер.
  • Контуры изображений, используемые в качестве значков-маркеров.

Потребление

Информацию об управлении расходами на платформу Google Maps, включая создание бюджетов, изменение квот и настройку оповещений, см. в разделе «Управление расходами» .