var map = L.map('map');
var marker = L.marker([10.496093,-66.881935]).on('click', onClick);
function onClick(e) {alert(e.latlng);}
marker.addTo(map)
マーカーをクリックすると、アラートメッセージは次のようになります。
しかし、変数マップに配置すれば機能します! (緯度と経度を表示)
map.on('click', onClick);
マーカーで機能しない理由を誰かが知っていますか?
私は解決策を見つけました:
function onClick(e) {alert(this.getLatLng());}
マーカーのgetLatLng()メソッドを使用しました
受け入れられた答えは正しいです。しかし、私はもう少し明確にする必要があったので、誰か他の人もそうする場合に備えて:
Leafletを使用すると、マップ上で行うほぼすべてのイベント(この場合はマーカー)でイベントを発生させることができます。
だから、あなたはcould上記の質問で提案されているようにマーカーを作成します:
L.marker([10.496093,-66.881935]).addTo(map).on('mouseover', onClick);
次に、onClick関数を作成します。
function onClick(e) {
alert(this.getLatLng());
}
これで、そのマーカーにマウスを重ねると、現在の緯度/経度のアラートが発生します。
ただし、「mouseover」の代わりに「click」、「dblclick」などを使用し、lat/longに警告する代わりに、onClickの本体を使用して必要な操作を実行できます。
L.marker([10.496093,-66.881935]).addTo(map).on('click', function(e) {
console.log(e.latlng);
});
ドキュメントは次のとおりです。 http://leafletjs.com/reference.html#events
次に、関数呼び出しを使用したjsfiddleを示します。 https://jsfiddle.net/8282emwn/
var marker = new L.Marker([46.947, 7.4448]).on('click', markerOnClick).addTo(map);
function markerOnClick(e)
{
alert("hi. you clicked the marker at " + e.latlng);
}
追加の関連情報:一般的な必要性は、サーバーから詳細情報を取得する目的で、マーカーで表されるオブジェクトのIDをajax呼び出しに渡すことです。
私たちがするとき:
marker.on('click', function(e) {...
e
は、マーカーオブジェクトに到達できないMouseEventを指します。しかし、組み込みのthis
オブジェクトがあり、奇妙なことに、options
オブジェクトにアクセスするためにthis.options
を使用する必要があり、必要なものをすべて渡すことができます。上記の場合、オプションに何らかのIDを渡すことができます。たとえば、objid
とすると、上記の関数内で、this.options.objid
を呼び出すことで値を取得できます