0

Google マップ 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 を使用するにはこれが必要です。コンソールにエラーが表示されません。sの結果についてはconsole.log、最初のもの (imap) はマップ オブジェクトを正しく返します。2 番目 (マーカー リスト) は、単に空の配列 ("[]") を返します。

MarkerClusterer コードに問題はないようです。私の疑いは、マーカーを間違って追加していることです。ここで何が問題なのかについての洞察はありますか?

私はこれを参考にしています: https://code.google.com/p/jquery-ui-map/wiki/jquery_ui_map_v_3_sample_code

4

1 に答える 1

3

console.log(smap.gmap('get', 'markers')); の場合、$.getJSON は非同期です。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'));
    });
于 2015-05-20T15:48:41.840 に答える