JQuery函数不打印任何东西

时间:2014-06-24 20:55:50

标签: javascript jquery

我试图让它运行这个jquery函数,但没有任何结果。就这个。它从setmap(servlet)接收一个以json格式化的列表。我完全相信我会得到这份清单,但不幸的是我没有看到地图出现在屏幕上。

$(document).ready(function(){

    $("#airports").click(function(){

        $.getJSON('setmap', function(list) {       

            var mapOptions = {
                zoom: 2,
                mapTypeId: new google.maps.MapTypeId.TERRAIN
            };

            $('.grid_12').append($("<div id='mapCanvas'></div>"));

            var map = new google.maps.Map(mapCanvas, mapOptions);  

            if(list.length > 0)
            {
                for (var i = 0; i < list.length; i++) 
                {
                    var latLng = new google.maps.LatLng(list[i].latitude,list[i].longitude);
                    var marker = new google.maps.Marker({
                        position: latLng,
                        map: map
                    });
                }    
            } 

        });

    });
});

HTML

<article>
  <section class="grid_12"></section>
</article>

1 个答案:

答案 0 :(得分:1)

在这一行:

var map = new google.maps.Map(mapCanvas, mapOptions); 

mapCanvas未定义。它可能隐含在某些浏览器中工作,因为某些浏览器会为每个ID定义一个符号,但你真的不应该依赖它。我假设您想要在那里传递DOM元素(这就是谷歌地图想要的),所以你可以更明确地这样做:

var mapCanvas = ($("<div id='mapCanvas'></div>").appendTo('.grid_12'))[0];
var map = new google.maps.Map(mapCanvas, mapOptions); 

由于您尚未提供可运行的演示,因此可能还存在其他错误。