【问题标题】:Google Maps Issue Cannot call method 'apply' of undefined?谷歌地图问题无法调用未定义的“应用”方法?
【发布时间】:2011-08-18 15:30:25
【问题描述】:

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

未捕获的类型错误:无法调用未定义的“应用”方法

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

【问题讨论】:

  • 感谢大家的回答,真不敢相信我错过了那个 ;-)

标签: javascript


【解决方案1】:

在这一行

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

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

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

【讨论】:

  • 非常有用的提示。就我而言,我遇到了同样的错误,关于 addListenerOnce(map, 'bounds_changed')
  • 也发生在我身上,并通过使用内联函数修复。 tks
【解决方案2】:

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

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

现在您直接调用 addMarker ,它不返回任何值。这意味着您有效地将 undefined 传递给 API,而 google 库在尝试调用您的回调时遇到错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多