2010-04-11 45 views
1

这里的问题是:jQuery的谷歌地图问题

比方说,应要求可加载谷歌地图和隐藏一个jQuery切换按钮它后,当切换:

$('#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]); 
    } 
    }); 

当点击按钮我有错误地图是未定义的。我的想法是全球定义谷歌地图对象:

map = new GMap2($("#map").get(0)); 

这在Firefox中完美工作,但是,地图无法加载Internet Explorer!

有什么建议吗?

回答

2

无论是在功能包装都这样你就可以通过关闭到map(他们应该已经因为无论如何,你应该对这些做的document.ready):

$(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)); 
    // ... 
}); 

等。

0

好,回答过的问题..似乎与IE中的变量名的ID冲突...笑

只是改变了id来#mapContainer

问题解决了,

+0

不要忘记标记这是接受的答案然后 – Anurag 2010-04-11 18:36:53