Google Maps问题无法调用未定义的方法'apply'?

Apq*_*pqu 8 javascript

我已经在谷歌搜索了一个解决方案,但这似乎是一个新的?我正在尝试在网站上实施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);
        });
Run Code Online (Sandbox Code Playgroud)

mat*_*boy 29

在这一行

google.maps.event.addDomListener(map, 'tilesloaded', addMarker(location));
Run Code Online (Sandbox Code Playgroud)

您正在调用函数addMarker而不是将其作为函数引用传递.因此,在定义map之前,addMarker正在执行.尝试将该行更改为:

google.maps.event.addDomListener(map, 'tilesloaded', function() {addMarker(location)});
Run Code Online (Sandbox Code Playgroud)


Jar*_*Par 6

问题是你正在调用addMarker你应该提供回调的函数.将您的通话更改为以下内容

google.maps.event.addDomListener(map, 'tilesloaded', function() { addMarker(location) });
Run Code Online (Sandbox Code Playgroud)

现在你改为直接调用addMarker哪个不返回任何值.这意味着您正在有效地传递undefined给API,并且谷歌库正在尝试调用您的回调