У нас есть простое приложение, сделанное с помощью Angular, которое имеет 5 страниц, каждая с картой Google. Причина, по которой мы перешли на Angular, заключалась в том, чтобы мы могли уменьшить количество вызовов Map на сеанс пользователя до 1 (в приложении на основе javascript оно увеличивалось до 20 за сеанс!).
Однако, наша реализация по-прежнему стоит столько вызовов карты, сколько посещений каждой из этих страниц, и мы хотели бы знать, что мы делаем не так.
Вот наша настройка:
Мы используем библиотеку agm-core (а не сценарий JS напрямую). Мы разделили наше приложение на 5 подкомпонентов (каждая страница со своим собственным компонентом) с главным компонентом: / home. Карта импортируется в отдельный компонент на том же уровне, что и компонент «Дом»
Мы также разрешаем пользователям скрывать карту. Для этого мы попробовали две вещи: 1.) Установить нулевую высоту / ширину карты. 2.) Pu sh карта выходит за пределы экрана, и вернуть ее, когда пользователь захочет ее увидеть.
Наша структура компонентов:
- map-div
- home
- page1
- page2
- page3
- page4
- page5
Щелчок по каждой из страниц не должен снова инициализировать map-div , однако после тестирования и глядя на вызовы API в GCP, мы понимаем, что каждый щелчок страницы по-прежнему засчитывается для вызовов карты.
Примечание: Чтобы проверить количество вызовов API, мы создали отдельную среду с новый ключ и выполнял ограниченные отслеживаемые шаги для определения правильного количества вызовов. Каждый щелчок по страницам 1..5 засчитывался как отдельный вызов API.
Ниже показано использование GCP API / Services -> Учетные данные -> Ключ после нажатия на страницы 1 .. .5, всего 12 раз.
Total usage (last 30 days)
12
Мы также просмотрели «Транзакции» в разделе «Биллинг», и число кажется правильным (плата за вызовы Dynami c Map).
Мы не просматривали код внутри agm-core и пытаемся избежать накладных расходов на реализацию настраиваемого класса с использованием Javascript в надежде, что должен быть лучший способ сделать это. Пожалуйста, оставьте комментарий, если мы можем включить дополнительную информацию / код.
Какой подход мы должны использовать, чтобы каждый сеанс обходился нам только в 1 загрузку карты?
Спасибо