Я получаю ошибку "Не могу вызвать метод" addDomListener "неопределенной" ошибки с помощью google.maps.event.addDomListener(window, 'load', initialize);
строка кода, где event
"undefined". Мой код ниже в основном копируется из примера на сайте developers.google.com.
$(function () {
var officeMap = $("#map-canvas");
if (officeMap.length > 0) {
var map;
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(-34.397, 150.644), zoom: 8
};
map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
}
});
Скрипт google maps (с ключом API) загружается перед этим в конце тела документа (с использованием Modernizr), выглядя так: https://maps.googleapis.com/maps/api/js?key=myApiKey&sensor= false "(я переключаю" myApiKey "с помощью ключа генерации:))
Указывает ли ошибка, что сценарий Google Maps не загружался первым? Или мой API-ключ недействителен? Или что-то другое?
Образец кода Google верен, но не будет запускаться на большинстве веб-сайтов, если есть загрузка сценария ajax. И да, вы правы, сценарий google не загружается в тот момент, когда вы вызываете функцию.
Взгляните на источник этого сценария google, это не полный javascript sdk, это просто файл прокси/стартер. Я помню, что это не так, как в прошлый раз, когда этот образец кода работает без проблем.
<script src="https://maps.googleapis.com/maps/api/js?sensor=false&callback=initialize"></script>
<script>
function initialize() {
var officeMap = $("#map-canvas");
if (officeMap.length > 0) {
var map;
var mapOptions = {
center: new google.maps.LatLng(-34.397, 150.644), zoom: 8
};
map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
}
}
</script>
Попробуйте использовать это вместо своего ключа
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false">
Мой код
var myCenter=new google.maps.LatLng(-34.397, 150.644);
function initialize()
{
var mapProp = {
center:myCenter,
zoom:8,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
var map=new google.maps.Map(document.getElementById('maparea'),mapProp);
var marker=new google.maps.Marker({
position:myCenter,
title:'Hi'
});
marker.setMap(map);
var infowindow = new google.maps.InfoWindow({
content:'',
boxStyle: {
maxHeight:200
}
});
infowindow.open(map,marker);
}
google.maps.event.addDomListener(window, 'load', initialize);