Я следую документации API карт Google: https://developers.google.com/maps/documentation/javascript/customoverlays
Определение USGSOverlay, который является прототипом google.maps.OverlayView (), перед их методом init.
У меня есть отдельный html-файл и отдельный javascript-файл (Map.js), где я вызываю метод init для карты.
<div id="googleMap"></div>
<script src="Map.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?key=<YOURKEY>&callback=init"></script>
Однако это приводит к ошибке, что google не определен в google.maps. .OverlayView ().
Я знаю, что должен определить свой maps.googleapis.com перед моим Map.js, но если я это сделаю, то функция обратного вызова не будет определена, поскольку она находится на карте. js файл.
Как я могу добиться этого, храня HTML-код и код JavaScript в разных файлах?
РЕДАКТИРОВАТЬ:
Итак, я следовалдокументация в ссылке здесь для асинхронного отсрочки: https://developers.google.com/maps/documentation/javascript/tutorial#sync
Но я все еще получаю ошибку.
Мой HTML-код:
<!DOCTYPE html>
<html>
<head>
<title>Simple Map</title>
<style>
#map {
height: 50%;
}
html, body {
height: 100%;
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<div id="map"></div>
<script src="map.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_KEY&callback=initMap"
async defer></script>
</body>
</html>
И мой код JavaScript в map.js:
var map;
CustomImageOverly.prototype = new google.maps.OverlayView();
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -34.397, lng: 150.644},
zoom: 8
});
}
function CustomImageOverly(bounds, image, map) {
this.bounds_ = bounds;
this.image_ = image;
this.map_ = map;
this.div_ = null;
this.setMap(map);
}
Отображает карту правильно, но для наложения,все равно выдает ошибку: гугл не определен. Что-то мне не хватает?