3

Leaflet とMarker Clustererを使用してマーカーを整理し始めたところです。

問題 #1:クラスター化されていないマーカーをクリックすると、ポップアップが表示されません。

問題 #2:クラスターを数回クリックすると、そのクラスター内のすべてのマーカーが表示され、このマーカーの 1 つをクリックすると、そのポップアップが表示されます! ただし、マップをクリックしてポップアップを閉じた後、これらのクラスター化されたマーカーのいずれかをクリックしても、ポップアップは開きません!

クラスター化されていないマーカーが 3 つしかない場合、ポップアップは正常に機能します。ただし、マーカーが追加されると、クラスターが形成されると、クラスター内のマーカーをクリックしてもポップアップが開きません!

マーカークラスタラーの初期化

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

マーカークラスターに追加されたすべてのマーカーmarkers

render関数をループ呼び出ししてを作成markerし、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);
    }
});

マーカークラスタラーなし

markerを直接追加するmapと、markerclusterer 配列の代わりにmarkers、ポップアップが正常に動作するので、問題はmarkerclusterer に関係していると思います。

ポップアップのそのような動作につながる何か間違ったことをしましたか? すべての助けに感謝します、ありがとう!

4

2 に答える 2

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を注意深く読んでください、それはすべてそこにあります...

于 2012-11-13T17:06:09.583 に答える
0

Leaflet + Clusterer スタック (Js および Css) にすべての正しいバージョンがあることを確認してください。Clusterer Github リポジトリの例と比較してください。

于 2013-01-24T15:37:09.100 に答える