亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

單擊標記時打開錯誤的彈出窗口

單擊標記時打開錯誤的彈出窗口

繁星點點滴滴 2023-11-02 16:57:28
我有很多標記,所以我將它們聚集在一起。我遇到了問題,當用戶從集群中縮小時,我想保持彈出窗口打開,我找到了這個解決方案https://jsfiddle.net/sghL4z96/65/Leaflet Markercluster:從聚類中免除標記效果很好。但問題是當標記離簇本身太近時,當我嘗試使用相同的解決方案時,我得到了這個結果https://jsfiddle.net/s2mnvL5w/3/當我單擊群集時,會顯示兩個標記。例如,如果我單擊左側標記,則會彈出文本一。當我關閉此彈出窗口時,我會再次嘗試打開左側標記,然后會彈出文本二是錯誤的。相反,我得到了一個。我的錯誤在哪里,希望解決方案可以調整為坐標非常接近的標記。clustered.on('popupopen', function(e) {    console.log('open');    const m = e.popup._source;    clustered.removeLayer(m);    unclustered.addLayer(m);    m.openPopup();});unclustered.on('popupclose', function(e) {    console.log('close');    let m = e.popup._source;    unclustered.removeLayer(m);    clustered.addLayer(m);    m.closePopup();});
查看完整描述

1 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

這是因為您從組中刪除了該圖層clustered。再次將其添加到組后,它就有了新的訂單。


你可以這樣做:


let popup;

const mkMarker = function(lat, lng, txt) {

    const m = L.marker(L.latLng(lat, lng));

    m.addTo(clustered);

  m.popupText = txt;

  m.on('click',(e)=>{

    var marker = e.target;

    var latlng = marker.getLatLng();

    var offset = [0,0];

    if(marker._preSpiderfyLatlng){

        latlng = marker._preSpiderfyLatlng;

    }else{

      offset= marker.options.icon.options.popupAnchor;

    }

    

    popup = L.popup({offset: offset}).setContent(marker.popupText).setLatLng(latlng).addTo(map)

  })

    return m;

};

并去掉popupopen/close監聽函數


查看完整回答
反對 回復 2023-11-02
  • 1 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號