谷歌地图全球对象;由coffeescript生成的js无法正常工作

时间:2013-07-28 18:55:20

标签: javascript google-maps google-maps-api-3 coffeescript

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,但这也没用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

错误地编译了handleNoGeolocation函数定义。应该是

var errorFlag, initialize, handleNoGeolocation;
//..
//..
handleNoGeolocation = function (errorFlag) {
    //..
    //..
};

而不是

handleNoGeolocation(errorFlag = function() {
    //..
    //..
});

我猜缩进会出现问题。

希望这会有所帮助。