Google地图应用中的全局对象是什么?
我在https://developers.google.com/maps/documentation/javascript/examples/map-geolocation
重写了js在coffeescript中,它生成了以下javascript:
// Generated by CoffeeScript 1.6.3
(function() {
var errorFlag, initialize;
google.maps.visualRefresh = true;
initialize = function() {
var map, mapOptions;
mapOptions = {
zoom: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
if (navigator.geolocation) {
return navigator.geolocation.getCurrentPosition(function(position) {
var infowindow, pos;
pos = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
infowindow = new google.maps.InfoWindow({
map: map,
position: pos,
content: 'Location found'
});
return map.setCenter(pos);
}, function() {
return handleNoGeolocation(true);
});
} else {
return handleNoGeolocation(false);
}
};
handleNoGeolocation(errorFlag = function() {
var content, infowindow, options;
if (errorFlag) {
content = 'Geolocation failed';
} else {
content = 'Your browser does not support Geolocation';
}
options = {
map: map,
position: new google.maps.LatLng(60, 105),
content: content
};
infowindow = new google.maps.InfoWindow(options);
return map.setCenter(options.position);
});
google.maps.event.addDomListener(window, 'load', initialize);
}).call(this);
当我使用他们网站上的js时,该应用程序可以正常工作,但是当我使用coffeescript生成的js时,该应用程序无效。我的猜测是,由于map变量是代码中的全局变量,我也应该将它绑定到全局对象。我试过了window.map
,但这也没用。有什么想法吗?
答案 0 :(得分:0)
错误地编译了handleNoGeolocation
函数定义。应该是
var errorFlag, initialize, handleNoGeolocation;
//..
//..
handleNoGeolocation = function (errorFlag) {
//..
//..
};
而不是
handleNoGeolocation(errorFlag = function() {
//..
//..
});
我猜缩进会出现问题。
希望这会有所帮助。