0

谷歌地图应用程序中的全局对象是什么?

我在https://developers.google.com/maps/documentation/javascript/examples/map-geolocation重写了 js

在咖啡脚本中,它生成了以下 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了,但这也没有用。有任何想法吗?

4

1 回答 1

0

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

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

而不是

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

我猜缩进出了点问题。

希望这可以帮助。

于 2013-07-28T19:11:20.603 回答