4

circleMarkerカスタムの都市名をマップに追加する必要があります。しかし、ラベルの下にポリゴンがあるため、ラベルをクリックしたい 追加するJSコードがありますcircleMarker

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 はサポートしておらずpointer-events、Label は SVG ではなく div 要素です。

誰かが静的な Label でポインターイベントを無効にする解決策を持っていますか?

4

3 に答える 3

3

レイヤーを介してマウス イベントを転送すると、この問題の解決に役立つ場合があります。これは、ie にポインターイベントがないことに対する回避策のようなものです。この問題に関する素敵なブログ エントリを次に示します。

レイヤを介したマウス イベントの転送

于 2013-12-02T08:58:51.567 に答える
0

私は解決策を見つけましたが、最初に考えたようではありません。

mapbox lib call leaflet-pipを使用します

手順の詳細:

  • すべてのラベルでクリック イベントを確認する
  • マップのドラッグ後にクリックをトリガーしないでください(私はすでにnoclickドラッグ開始時に持っていました)
  • でマウスの緯度経度を取得しますmouseEventToLatLng(e)
  • この緯度経度でポリゴンを取得します
  • 最後に、結果のポリゴンでクリックをトリガーします

これを達成するための私のコードがあります:

$(".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");
        }
    }
});
于 2013-12-16T08:58:54.843 に答える