我是新手,练习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"
})
}
});
答案 0 :(得分:14)
两个问题:
JavaScript区分大小写,这一行:
Map = new google.maps.Map
应该是
map = new google.maps.Map
(注意开头地图中的小写字母m。)
那么为什么你没有得到“未定义的变量”错误或其他什么?因为The Horror of Implicit Globals。请考虑使用strict mode,以便获得主动通知。
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 ----------------------------^^^