对于我正在使用Google地图将折线添加到地图以显示路线的网站。有些路线由多条腿(阶段)组成,我正在尝试根据要求添加折线。因此,只有当用户选择显示一条腿时,它才会绘制折线。用户也可以选择完全不同的路线,并且也应该在地图上绘制这组新的折线。
我的问题是我似乎无法弄清楚或找到如何选择现有地图。我首先使用以下代码创建地图:
qMap = new google.maps.Map(document.getElementById(mP.target), mapOptions);
mP.target
包含一个带有画布id
的字符串,而mapOptions
只是一个带有一些选项的对象,没什么特别的。
所以我使用qMap
做各种事情,比如添加标记,绘制折线等等。这不仅应该在地图启动时完成,还应该在用户想要添加内容时完成。 qMap
不是一个全局变量,我也不认为它是一个全局变量。
我尝试了qMap = google.maps.Map(document.getElementById(mP.target))
和其他类似的方法。没有成功。我希望你可以帮我找到一个没有全局变量的方法!谢谢!
答案 0 :(得分: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
}
};
}());