0

对于一个网站,我使用谷歌地图将折线添加到地图以显示路线。有些路线由多条腿(阶段)组成,我正在尝试“根据要求”添加折线。因此,只有当用户选择显示一条腿时,它才会绘制折线。此外,用户可能会选择一条完全不同的路线,并且这组新的折线也应绘制在地图上。

我的问题是我似乎无法弄清楚或找到如何选择现有地图。我首先使用以下代码创建地图:

qMap = new google.maps.Map(document.getElementById(mP.target), mapOptions);

mP.target包含一个带有画布的字符串,id只是mapOptions一个带有一些选项的对象,没什么特别的。

所以我用 做各种事情qMap,比如添加标记、绘制折线等。这不应该只在地图启动时完成,还应该在用户想要添加一些东西时完成。qMap不是全局变量,我也不想让它成为全局变量。

我试过qMap = google.maps.Map(document.getElementById(mP.target))和其他类似的方法。没有成功。我希望您能帮助我找到一种无需全局变量的方法!谢谢!

4

1 回答 1

0

您可以尝试几件事。

1)将您的代码包装在立即调用的函数中。这样,任何变量都包含在函数的范围内,并且不会逃逸以污染全局变量空间,我猜这是您主要关心的问题。

(function () {

  var mapGlobal = new google.maps.Map(target, options);

  function thatDoesSomething(){
    // do something with mapGlobal
  }

}());

2) 使用一个静态对象,它可能对组织你的代码很方便。

var Map = {

  map: new google.maps.Map(target, options),

  thatDoesSomething: function () {
    // do something with this.map
  }

};

3)或将它们组合起来。

(function () {

  var Map = {

    map: new google.maps.Map(target, options),

    thatDoesSomething: function () {
      // do something with this.map
    }

  };

}());
于 2013-11-02T17:44:32.360 回答