2012-09-30 76 views
3

我剛開始使用單張和Marker Clusterer來組織標記。單擊標記不會打開彈出單擊

問題1:當單擊非集羣標記時,不會出現彈出窗口。

問題2:當多次單擊某個集羣時,該集羣內的所有標記都會出現,並且當單擊此標記之一時,其彈出窗口就會出現!但是,通過單擊地圖關閉彈出框後,單擊任何這些聚集標記都不會打開任何彈出窗口!

如果我只有3個非集羣標記,彈出工作正常。但是,隨着更多標記的添加,一旦形成簇,點擊任何簇內的標記都不會導致彈出窗口打開!

初始化markerclusterer

markers = new L.MarkerClusterGroup(); 
map.addLayer(markers); 

加入markercluster markers

render功能的循環調用創建,並把它添加到markerclusterer的陣列markers所有標記。 (忽略Backbone.js的代碼)

ListingMarkerView = Backbone.View.extend({ 
    template: _.template($('#tpl_ListingMarkerView').html()), 

    render: function() { 

     // Create marker 
     var content = this.template(this.model.toJSON()); 
     var marker = new L.marker(
      [this.model.get('lat'), this.model.get('lng')], 
      {content: content}); 
     marker.bindPopup(content); 

     // Add to markerclusterer 
     markers.addLayer(marker); 
    } 
}); 

沒有markerclusterer

如果我直接添加到的map代替markerclusterer陣列markers,在彈出窗口做工精細,所以我想這個問題與markerclusterer有關。

我做錯了什麼導致彈出窗口的行爲?所有幫助表示感謝,謝謝!

回答

2

從一點點我所知道的簇標記組的,你應該這樣做:

var markerGroup = new L.MarkerClusterGroup(); 
markerGroup.on('click', function(ev) { 
    // Current marker is ev.layer 
    // Do stuff 
}); 

將事件處理程序添加到集羣層代替,這樣做:

markerGroup.on('clusterclick', function(ev) { 
    // Current cluster is ev.layer 
    // Child markers for this cluster are a.layer.getAllChildMarkers() 
    // Do stuff 
}); 

哦,並仔細閱讀github README,它都在那裏...

0

確保您的Leaflet + Clusterer堆棧(Js和Css)中的所有內容都具有正確的版本。比較Clusterer Github回購中的例子。

相關問題