2013-06-04 7 views
30
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); 

誰かがマーカーで機能しない理由を知っていますか?

+1

'var marker = L.marker([10.496093、-66.881935])をオンにします( 'click'、funciton(e){alert(e.latlng);});'同じ結果が得られますか? – asifrc

+0

あなたが言った変更を行ったが動作しない –

+1

以下のChrisの投稿に続いて、あなたのコードを 'var marker = L.marker([10.496093、-66.881935])として修正することができます。addTo(map).on( 'click' onClick); ' – Ayush

答えて

12

私は解決策を見つけた:マーカーの

function onClick(e) {alert(this.getLatLng());} 

メソッドgetLatLngを(使用)

+9

あなたはこれのためにフィドルを作成できますか?マーカーにクリックイベントを割り当てる方法についての明確な文書はありません – snowgage

35

上記答えが正しいと合法的に認められています。 しかし、@snowgageと似ていますが、もう少し明確にする必要があったので、他の人も同様です。

リーフレットでは、事実上マップ上で何か事象を起こすことができます。この場合、マーカーです。それは、現在のアラートを起動しますいつでもあなたはそのマーカーをマウスオーバー今

function onClick(e) { 
    alert(this.getLatLng()); 
} 

L.marker([10.496093,-66.881935]).addTo(map).on('mouseover', onClick); 

はその後のonClick関数を作成:

だから、上記の質問ごとにマーカーを作成することができます緯度/経度。ただし、 'mouseover'の代わりに 'click'、 'dblclick'などを行うことができ、lat/longを警告する代わりに、onClickの本体でjsを使用して他の操作を行うことができます。ここで

は従うべきドキュメントです:http://leafletjs.com/reference.html#events

11

追加関連情報: 共通のニーズがサーバーからより多くの情報を取得する目的のためにいくつかのAJAX呼び出しにマーカーによって表されるオブジェクトのIDを渡すことです。

我々が行うときようだ:

marker.on('click', function(e) {... 

私たちは、マーカーオブジェクトを取得できませんのMouseEventにeポイント。しかし、thisというオブジェクトがあり、それはthis.optionsを使用してoptionsオブジェクトに到達する必要があり、私たちに必要なものを渡すことが必要です。ここでは、関数呼び出しとjsfiddleだthis.options.objid

11

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); 
} 
上記のケースでは、我々はのは、上記の機能の中に、我々は呼び出すことで値を取得することができ、その後 objidを言わせて、オプションでいくつかのIDを渡すことができます
+0

名前やその他の変数のようなマーカーのプロパティにアクセスする方法はありますか? – nikhilvj

+1

@nikhilvj:いくつかの追加オプションがある拡張jsfiddleがあります:https://jsfiddle.net/8282emwn/139/ –

-1

パーティーに少し遅れましたが、これはマーカーのクリックイベントの例を探している間に見つかりました。 onClick関数が定義される前に参照されているため、元のポスターには未定義のエラーがあります。 2行目と3行目を交換してください。

+0

これは間違っています。 Javascriptでホイストを見るhttps://developer.mozilla.org/en-US/docs/Glossary/Hoisting – nikoshr

関連する問題