Tôi có tệp label.js riêng biệt mà trong đó tôi đã xác định lớp phủ tùy chỉnh. Nó sử dụng google.maps.OverlayView làm nguyên mẫu của nó:Cách đợi cho đến khi API bản đồ google đã tải trước khi tải một lớp bắt nguồn từ google.maps.OverlayView bắt nguồn
Label.prototype = new google.maps.OverlayView();
Tôi không chắc chắn vị trí đặt thẻ tập lệnh cho tệp js này trong tệp index.html của tôi. Nếu tôi đặt thẻ tập lệnh bên dưới thẻ tải bản đồ google như vậy:
....
<script async defer
src="https://maps.googleapis.com/maps/api/js?...
</script>
<script src="js/label.js"></script>
</body>
</html>
Tệp label.js được tải ngay khi bản đồ api chưa được tải gây ra lỗi.
Tôi hiện giải quyết điều này bằng cách tự tải JS trong bản đồ của tôi gọi lại nạp:
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)
}
Đây có phải là cách tốt nhất để giải quyết này?
tôi sẽ nói đó là cách tốt nhất khi bạn tải các bản đồ-API không đồng bộ –