2013-11-25 22 views
4

我必須在我的地圖上添加自定義城市名稱circleMarker。但我想CLIC THROU標籤,因爲已經在它之下polygone 還有就是我的JS代碼,多數民衆贊成加circleMarker單張標籤no隱藏無指針事件

var ville_label = new L.CircleMarker(
    [lat, lng], 
    { clickable: false, radius: (1/zoom)*12 } 
).bindLabel(lib, { noHide: true, className: "leaflet-ville-label" }) 
.addTo(ville_layer); 

在CSS我有禁用指標事件

.leaflet-ville-label { 
    pointer-events: none; 
} 

但是IE沒有按」 t supprot pointer-events並且標籤是div元素而不是SVG。

有人有一個解決方案,在靜態標籤禁用鼠標事件?

回答

0

我已經找到了解決方案,但不喜歡,我認爲第一。

我使用mapbox LIB調用leaflet-pip

過程中的細節:

  • 檢查點擊事件對我的所有標籤
  • 不TRIGER地圖拖動後單擊(我已經就拖了noclick開始)
  • 拿到老鼠Lat Lng用mouseEventToLatLng(e)
  • 用這個lat lng得到多邊形
  • 和finaly對結果多邊形

觸發點擊這裏是我的代碼來實現:

$(".leaflet-ville-label").off("click").on("click", function(e) { 
    if ($(this).hasClass("noclick")) { 
     $(".leaflet-ville-label").removeClass("noclick"); 
     return; 
    } 
    for (layer_id in kml_layer._layers) { 
     var under_layer = leafletPip.pointInLayer(france.mouseEventToLatLng(e), kml_layer._layers[layer_id]); 
     if (under_layer.length > 0) { 
      under_layer[0].fire("click"); 
     } 
    } 
}); 
3

通過圖層轉發鼠標事件可能會幫助您解決此問題。對於缺少ie中的指針事件,這是有點解決方法。下面是關於這個問題的一個很好的博客條目:

Forwarding Mouse Events Through Layers

+0

是的,我已經測試,但'document.elementFromPoint'不能返回地圖KML元素。 – DoubleYo

+0

我錯過了一個點來隱藏curretn元素。但是我現在有一個'path'或'g'元素。你能從中得到polygone嗎? – DoubleYo

+0

這裏有點功能,我發現轉換路徑:http://whaticode.com/2012/02/01/converting-svg-paths-to-polygons/ – Igle

1

你並不需要做的比這更多。

Click through a DIV to underlying elements解釋的,IE 9和10將只要標籤的背景是透明的轉發事件。 IE 11和其他瀏覽器堅持

.leaflet-ville-label { 
    pointer-events:none; 
} 

http://jsfiddle.net/LHL82/7/

+0

編輯:我剛剛看到,IE 11也堅持'pointer-events:none'。這意味着我無法在家用PC上檢查IE的透明度。明天將檢查IE <11。 – flup

+0

我需要此網站兼容IE 8+此解決方案無法正常工作。或者我做錯了。 – DoubleYo

+0

看起來像是IE9以上。 – flup