javascript - 除非用户触发要显示的地图,否则避免加载 Google Maps API
问题描述
因此,我有一个使用 Google Maps API 显示地图的网络应用程序,但该地图通常是从视图中隐藏的,并且每次页面加载都不需要它。我不想为每个页面加载调用 API(并在后台加载地图),我只想调用 API 并在实际需要时加载地图。
从带宽的角度来看,这似乎是一种不好的做法,并且每个页面加载都可能由 Google 收费。
这就是我以前的方式(总是加载),一旦页面完成加载就会加载:
// Define initMap code here, and then:
<script async defer src="https://maps.googleapis.com/maps/api/js?key=API_KEY_HERE&callback=initMap"></script>
什么是处理这个问题的好方法(最好是可以是单行代码的直接替换方法)?
事后我查看了添加此脚本标记的各种代码,但这似乎是错误的方法。
有一些较旧的帖子(例如单击时加载谷歌地图),但这些帖子已经过时,因为它们不包括现在使用谷歌地图所需的 API 密钥。它们也是多行的,不能直接替代通常使用的单个脚本标签。
另外,对于像这样的简单需求,我不喜欢谷歌建议的方法,它需要包含另一个代码库。(https://developers.google.com/maps/documentation/javascript/examples/programmatic-load-button)
解决方案
发现使用 jQuery(无论如何我都使用它), $.getScript 选项效果很好:
$("#user_expand_map_section_button").on("click", function(){
$.getScript('https://maps.googleapis.com/maps/api/js?key=API_KEY_HERE&callback=initSpecifyMap');
});
然后,只有在用户展开面板/单击按钮/打开模式等时,它才会调用 Google Maps API。
推荐阅读
- android - 为什么 notifyDataSetChanged 在我的适配器中不起作用
- python - 使用 json 将 django 日期时间传递给 golang 服务器
- java - 如何滑动主布局并强制调整大小?
- rxjs - How to use useReducer and rxjs with react hooks?
- r - R,计算列表元素的各种级别的 ecdf()
- jquery - 在等待 getJSON 时显示加载 gif
- java - 使用类型参数覆盖泛型方法时出现编译错误
- javascript - 使 3DSierpinskiTriangle 旋转
- wordpress - 为什么我的 Google 地图插件 KML 功能只能在某些地区使用?它在纽约和法国有效,但在德克萨斯州无效
- routing - 访问 L2TP 服务器后面的 LAN 子网