レイヤー(pbfLayer
という名前)を使用してベクタータイルを表示しています。クリックイベントをpbfLayer.fileEvent('click', {latlng: <some coordinate>})
でトリガーしたいとします。しかし、このようにイベント引数e
がプロパティーlatlng
,target
、およびtype
しか持たないのであれば、マウスクリックで手動でトリガーするとlayer
などのプロパティーが増えます。イベントを手動で発生させるときにe.layerを埋めてください
例: https://jsfiddle.net/ziyuang/dfekwzhd/
クリックイベントがトリガされるたびに、コンソールは、イベント引数e
を印刷します。
e
の他の特性を見つけて充填する方法があるが、私は、第1の座標と同じ用い、手動でクリックし、その後、プログラムによってイベントをトリガする場合は、コンソール出力のスクリーンショットは、以下のとおりでありますそのため、fireEvent
は完全にクリックを模倣することができますか?ありがとうございました。
アップデート1(https://jsfiddle.net/ziyuang/dfekwzhd/4/):
私はIvanSanchezのprosthetic-hand @しようとしたが、まだ動作していません。追加されたコードは
var crs = L.CRS.EPSG3857;
var rambaut_lake_latlng = L.latLng(40.99842740667731,-74.16458129882814);
var rambaut_lake_point = crs.latLngToPoint(rambaut_lake_latlng , map.getZoom());
var southwest_point = crs.latLngToPoint(map.getBounds()._southWest, map.getZoom());
var x = rambaut_lake_point.x - southwest_point.x;
var y = map.getSize().y - (southwest_point.y - rambaut_lake_point.y);
console.log([x, y])
var hand = new Hand();
var finger = hand.growFinger('mouse');
finger.moveTo(x, y, 0).down().up();
手動でクリックすると、「Rambaut湖」のポップアップが作成されますが、私はページ上の任意のポップアップが表示されないです。
更新2:これは最終的にhappenを使用して行います。私の場合は は、私が
var canvas = document.elementFromPoint(left, top);
$(canvas).happen({type: 'click', clientX: left, clientY: top});
に持っており、どちらも$('#map').happen({type: 'click', clientX: left, clientY: top})
も使用してjQueryのtrigger
私のために見つけcanvas
作品に。
クロス投稿:https://gis.stackexchange.com/questions/240938/fill-e-layer-when-firing-events-manually – xmojmr