“未捕获的TypeError:无法在'Window'上执行'getComputedStyle':当gmap添加时,参数1的类型不是'Element'.Tq ​​@ VM107:37mF

时间:2015-07-17 09:31:04

标签: jquery html google-maps

我是新手,练习HTML和jquery。 有人可以帮我解决这个错误吗? 当我试图动态添加谷歌地图时,我收到一个错误,如未捕获的类型错误:无法在'窗口'上执行'getComputedStyle':参数。

html标记是:

<type="submit" id="locate">Find me</button>
<div id="gmap"> </div>

enter code here

    $(document).ready(function () {

        $('#locate').on('click', function (e) {
            e.preventDefault();
            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(showPosition);
            }
            else {
                console.log('Geolocation is not supported by your browser');
            }
        });
        var latlng,
         mapOptions,
         map;

        showPosition = function (position) {
            latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude)
            mapOptions = {
                center: latlng,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                zoom: 15
            }
            Map = new google.maps.Map($('#gmap'), mapOptions);
            var marker = new google.maps.Marker({
                position: latlng,
                map: map,
                title: "You are here"
            })
       }
    });

1 个答案:

答案 0 :(得分:14)

两个问题:

  1. JavaScript区分大小写,这一行:

    Map = new google.maps.Map
    

    应该是

    map = new google.maps.Map
    

    (注意开头地图中的小写字母m。)

    那么为什么你没有得到“未定义的变量”错误或其他什么?因为The Horror of Implicit Globals。请考虑使用strict mode,以便获得主动通知。

  2. google.maps.Map构造函数希望你给它一个元素作为它的第一个参数,但你不是这样做的。你给它一个jQuery对象:

    map = new google.maps.Map($('#gmap'), mapOptions);
    //                        ^^^^^^^^^^--- this is a jQuery object
    

    要获取jQuery对象中的唯一元素,请使用[0]

    map = new google.maps.Map($('#gmap')[0], mapOptions);
    // Here ----------------------------^^^