我已经在谷歌搜索了一个解决方案,但这似乎是一个新的解决方案?我正在尝试在网站上实施google maps API但是我一直收到以下错误:
未捕获的TypeError:无法调用未定义的方法'apply'
我的JS如下:
var map;
function initialize(location) {
var mapDiv = document.getElementById('map-canvas');
var latLng;
if (location == 0) {
latLng = new google.maps.LatLng(52.066356, 1.102388);
}
else if (location == 1) {
latLng = new google.maps.LatLng(52.672492, 1.232196);
}
else if (location == 2) {
latLng = new google.maps.LatLng(52.207607, 0.123017);
}
map = new google.maps.Map(mapDiv, {
center: latLng,
zoom: 14,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
google.maps.event.addDomListener(map, 'tilesloaded', addMarker(location));
}
function addMarker(location) {
var latLng;
if (location == 0) {
latLng = new google.maps.LatLng(52.066703, 1.113573);
}
else if (location == 1) {
latLng = new google.maps.LatLng(52.672492, 1.232196);
}
else if (location == 2) {
latLng = new google.maps.LatLng(52.207607, 0.123017);
}
var marker = new google.maps.Marker({
position: latLng,
map: map
});
}
$(document).ready(function () {
initialize(0);
});
答案 0 :(得分:28)
在这一行
google.maps.event.addDomListener(map, 'tilesloaded', addMarker(location));
您正在调用addMarker函数,而不是将其作为函数引用传递。因此,在定义map之前,addMarker正在执行。尝试将该行更改为:
google.maps.event.addDomListener(map, 'tilesloaded', function() {addMarker(location)});
答案 1 :(得分:6)
问题是你正在调用你应该提供回调的函数addMarker
。将您的电话改为以下
google.maps.event.addDomListener(map, 'tilesloaded', function() { addMarker(location) });
现在你直接调用addMarker
而不返回任何值。这意味着您有效地将undefined
传递给API,并且Google图书馆遇到了尝试调用您的回调的错误