Jquery谷歌地图问题

时间:2010-04-11 17:59:30

标签: jquery google-maps

问题在于:

让我们说一个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上加载!!

有什么建议吗?

2 个答案:

答案 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

问题解决了,