如何减少 Angular Web App (agm-core) 中的地图调用次数?

How to reduce number of map calls in Angular Web App (agm-core)?

我们有一个使用 Angular 制作的简单应用程序,它有 5 个页面,每个页面都有 Google 地图。我们迁移到 Angular 的原因是我们可以将每个用户会话的 Map 调用数量减少到仅 1 个(在基于 javascript 的应用程序中,每个会话最多 20 个!)。

但是,我们的实施仍然会花费与每个页面的访问次数一样多的地图调用,我们想知道我们做错了什么。

这是我们的设置:

我们的组件结构:

- map-div
- home
  - page1
  - page2
  - page3
  - page4
  - page5

单击每个页面不应再次初始化 map-div,但是,在测试并查看 GCP 中的 API 调用之后,我们意识到每次页面点击仍计入地图调用。

注意: 为了测试 API 调用的数量,我们使用新密钥创建了一个单独的环境,并执行了有限的、可追踪的步骤来识别正确的号码的电话。对第 1..5 页的每次点击都计为一次单独的 API 调用。

以下是 GCP API/Services -> Credentials -> Key 上显示的用法,点击页面 1...5,总共 12 次。

Total usage (last 30 days)
12

我们还查看了 Billing 下的 Transactions,数字似乎是正确的(动态地图调用的费用)。

我们还没有检查 agm-core 中的代码,并试图避免使用 Javascript 实现自定义 class 的开销,希望一定有更好的方法来做这个。如果我们可以包含更多信息/代码,请发表评论。

我们应该采取什么方法才能使每个会话仅花费我们 1 个地图加载?

谢谢

您不能将其构建为用户会话仅花费 1 次地图加载。 JavaScript API 没有基于会话的选项,也没有缓存选项,这是 agm-core 库在下面使用的选项。

每次使用 google.maps.Map() class 创建地图时,地图加载 means。即使您“隐藏”了地图,如果您仍然创建它,那也很重要。加载地图的每个网页刷新都很重要。因此,如果这些页面中的每一个都加载了地图,那么每次访问所述页面时,预计地图加载的数量都会增加(无论是否是同一用户会话)。

如果您想降低成本,除了从不需要显示地图的网页中删除地图创建外,我建议您考虑按照 this FAQ 设置每日配额限制和预算警报。

如果其他人觉得有用,请发布我们的解决方案。

我们无法使用 agm-core 地图 class 来完成此操作。相反,我们使用 Google 地图 Javascript.

创建了我们自己的自定义 class

通过这样做,我们能够减少地图调用,并将其限制为每个用户会话一次(无论用户在我们的网络应用程序中访问了多少页面)。