Ho un file label.js separato in cui ho definito una sovrapposizione personalizzata. Esso utilizza il google.maps.OverlayView come il suo prototipo:Come aspettare che l'API di google maps sia caricata prima di caricare una google.maps.OverlayView classe derivata
Label.prototype = new google.maps.OverlayView();
non sono sicuro dove collocare i tag di script per questo js file in mio file index.html. Se metto i tag di script sotto le mappe di Google caricamento tag in questo modo:
....
<script async defer
src="https://maps.googleapis.com/maps/api/js?...
</script>
<script src="js/label.js"></script>
</body>
</html>
Il file label.js viene caricato immediatamente, mentre l'API di Google Maps non ha ancora caricato causando un errore.
Attualmente risolvere questo caricando manualmente il JS nelle mie mappe callback caricato:
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)
}
È questo il modo migliore per risolvere questo problema?
io direi che è il modo migliore quando si carica le mappe-API in modo asincrono –