获取Google Maps v3 Jquery中的所有标记

时间:2015-05-20 15:34:25

标签: jquery google-maps google-maps-api-3 markerclusterer jquery-ui-map

Google Maps v3 JQuery引入了以下获取标记的方法:

$map.gmap('get', 'markers');

我试过这个,但得到一个空数组。这是我正在使用的代码:

var smap = $('#smap');  

$(window).load(function() {
    /* Initialize Map */
    smap.gmap({
        center: '34.913167, -94.618089',
        zoom: 5
    }).bind('init', function() {
        /* Add markers */
        $.getJSON('static/stninfo.js', function(data) {
            $.each(data, function(index, stn) {
                var latlng = (stn.loc).substring(0, stn.loc.length - 4);

                smap.gmap('addMarker', {
                    position: latlng,
                    bounds: false,
                    id: stn.stnid
                }).click(function() {
                    smap.gmap('openInfoWindow', {
                        content: '<strong>' + stn.name + '</strong></br>' + latlng
                    }, this); 
                });
            });
        });

        var imap = smap.gmap('get', 'map');
        var imarkers = smap.gmap('get', 'markers');

        console.log(imap);
        console.log(smap.gmap('get', 'markers'));
        /* Initialize clusters */
        smap.gmap('set', 'MarkerClusterer', new MarkerClusterer(imap, imarkers));

    });
});

根据代码,我需要使用MarkerClusterer。我在控制台中没有收到任何错误。至于console.log s的结果,第一个(imap)正确返回地图对象。第二个(标记列表)只返回一个空数组(&#34; []&#34;)。

MarkerClusterer代码似乎没有错;我的怀疑是我错误地添加了标记。对这里的错误有任何见解?

我一直在使用此作为参考:https://code.google.com/p/jquery-ui-map/wiki/jquery_ui_map_v_3_sample_code

1 个答案:

答案 0 :(得分:3)

$。getJSON是异步的,当console.log(smap.gmap(&#39; get&#39;,&#39; markers&#39;));执行getJSON可能还没有结束,所以你的空数组已经存在。

把它放在getjson代码中,很可能你会让它工作

       $.getJSON('static/stninfo.js', function(data) {
        $.each(data, function(index, stn) {
            var latlng = (stn.loc).substring(0, stn.loc.length - 4);

            smap.gmap('addMarker', {
                position: latlng,
                bounds: false,
                id: stn.stnid
            }).click(function() {
                smap.gmap('openInfoWindow', {
                    content: '<strong>' + stn.name + '</strong></br>' + latlng
                }, this); 
            });
        });
        console.log(smap.gmap('get', 'markers'));
    });