【发布时间】:2015-09-27 13:49:51
【问题描述】:
我有一个单独的 label.js 文件,我在其中定义了一个自定义叠加层。它使用 google.maps.OverlayView 作为原型:
Label.prototype = new google.maps.OverlayView();
我不确定在我的 index.html 文件中将此 js 文件的脚本标记放在何处。如果我将脚本标签放在谷歌地图加载标签下方,如下所示:
....
<script async defer
src="https://maps.googleapis.com/maps/api/js?...
</script>
<script src="js/label.js"></script>
</body>
</html>
label.js 文件在 maps api 尚未加载时立即加载,导致错误。
我目前通过在我的地图加载回调中手动加载 JS 来解决这个问题:
function initMap() {
gMap = new google.maps.Map(document.getElementById(strMapDivName), {
center: {lat: 21, lng: 78},
mapTypeId: google.maps.MapTypeId.HYBRID,
zoom: 6,
heading: 90,
tilt: 0
});
// Load label.js afterwards so we can be sure that the google maps api has loaded
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", "js/label.js")
document.getElementsByTagName("head")[0].appendChild(fileref)
}
这是解决这个问题的最佳方法吗?
【问题讨论】:
-
我会说这是异步加载 maps-API 的最佳方式
标签: javascript google-maps google-maps-api-3