我以为我理解默认操作数在 JavaScript 中是如何工作的,但显然不是。我试图首先确定用户的地理位置,并加载以这些坐标为中心的地图。如果设备无法确定这些坐标,它将回退到仅使用一些默认值加载地图。
您会注意到,在我的错误方法中,我gMap.init()
没有参数调用,我认为这应该意味着变量应该分别设置为 57.700992 和 11.893836 lat
。lon
相反,我得到Uncaught TypeError: Cannot read property 'coords' of undefined
. 我哪里错了?
另外,如果存在,theApp.init()
我正在调用地图。navigator.geolocation
这是否意味着不支持 HTML5 地理定位的浏览器甚至不会尝试加载地图?
var gMap = {
init: function (position) {
var lat = position.coords.latitude || 57.700992,
lon = position.coords.longitude || 11.893836,
geocoder = new google.maps.Geocoder(),
mapOptions = {
zoom: 12,
center: new google.maps.LatLng(lat, lon)
},
map = new google.maps.Map(document.getElementById('mapcanvas'), mapOptions);
},
error: function () {
console.log('failed to retrieve geoposition');
gMap.init();
}
}
var theApp = {
init: function () {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(gMap.init, gMap.error, {timeout:10000});
}
}
}