Javascript 谷歌地图问题无法调用方法';应用';未定义的?

Javascript 谷歌地图问题无法调用方法';应用';未定义的?,javascript,Javascript,我已经在谷歌搜索了一个解决方案,但这似乎是一个新的?我试图在一个站点上实现google maps API,但我不断收到以下错误: 未捕获的TypeError:无法调用未定义的方法“apply” 我的建议如下: var map; function initialize(location) { var mapDiv = document.getElementById('map-canvas'); var latLng;

我已经在谷歌搜索了一个解决方案,但这似乎是一个新的?我试图在一个站点上实现google maps API,但我不断收到以下错误:

未捕获的TypeError:无法调用未定义的方法“apply”

我的建议如下:

        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);
        });

问题是您正在调用函数
addMarker
,您应该提供回调函数。将您的呼叫更改为以下地址

google.maps.event.addDomListener(map, 'tilesloaded', function() { addMarker(location) });
现在您直接调用
addMarker
,它不返回任何值。这意味着您正在有效地向API传递
未定义的
,而google库在这一行中试图调用回调时遇到了错误

google.maps.event.addDomListener(map, 'tilesloaded', addMarker(location));
您正在调用函数addMarker,而不是将其作为函数引用传递。因此,addMarker是在定义映射之前执行的。尝试将该行更改为:

google.maps.event.addDomListener(map, 'tilesloaded', function() {addMarker(location)});

谢谢你们的回答,伙计们,真不敢相信我错过了那个;-)非常有用的提示。在我的例子中,关于addListenerOnce(map,‘bounds_changed’)我也遇到了同样的错误,并通过使用内联函数进行了修复。tks