问题在于:
让我们说一个Jquery切换按钮,根据请求加载Google Map并在切换后隐藏它:
$('#showmeMap').toggle(function()
{
var map = new GMap2($("#map").get(0));
var mapCenter = new GLatLng(-2, 20);
map.setCenter(mapCenter, 12);
$('#map').show();
}
}, function() {
$('#map').hide();
});
然后我添加一些随机标记,然后添加另一个从地图中删除标记的函数:
$('#destroyMarkersButton').click(function() {
for (var i=0; i<gmarkers.length; i++)
{
map.removeOverlay(gmarkers[i]);
}
});
点击按钮时,我收到错误地图未定义。我的想法是全局定义Google Map对象:
map = new GMap2($("#map").get(0));
在Firefox中完美运行,但地图无法在Internet Explorer上加载!!
有什么建议吗?
答案 0 :(得分:2)
将两者都包装在一个函数中,这样你就可以通过闭包来到map
(它们应该已经存在了,因为你应该在这些文件上做文件。)
$(function()
{
var map;
$('#showmeMap').toggle(function()
{
map = new GMap2($("#map").get(0));
// ...
});
$('#destroyMarkersButton').click(function() {
// ...
});
});
或者,您可以定义一个名称空间(通常我有一个库,它可以递归地执行,而不是像这样直接):
if (window.myApp === undefined)
window.myApp = {};
var appNS = window.myApp;
然后,您可以放心地使用该命名空间,它将保留整个页面,因为它直接绑定到window
:
$('#showmeMap').toggle(function()
{
appNS.map = new GMap2($("#map").get(0));
// ...
});
等等。
答案 1 :(得分:0)
好的,问题回答..似乎Id与IE中的变量名称冲突... lol
刚刚将id更改为#mapContainer
问题解决了,