3

マーカーをクリックする代わりに、マウスホバーイベントのポップアップを表示し、クリックされたときに他の処理(funcなど)実行しようとしています。

私が信じていない私の半分成功したコードは、あなたがその方向に考えるのを助けるでしょう:

(クリックイベントにホバーを追加するだけです)

marker[i].on('mouseover', marker[i].bindPopup('hi').openPopup.bind(marker[i]));

[i]は単にループを表します


LeafletのAPI: http: //leaflet.cloudmade.com/reference.html#map-openpopup

4

2 に答える 2

10

次のコードは、マーカーがマウスオーバーされたときにポップアップを表示し、マーカーがクリックされたときに何か他のことを行います。

marker[i].on('mouseover', function(evt) {
  //evt.target is the marker that is being moused over 
  //bindPopup() does not need to be called here if it was already called
  //somewhere else for this marker.
  evt.target.bindPopup('hi').openPopup();
});
marker[i].on('click', function(evt) {
  //again, evt.target will contain the marker that was clicked
  console.log('you clicked a marker');
});
于 2012-10-22T14:27:47.733 に答える
1

マウスオーバーイベントのコールバックを提供していません。

marker[i].on('mouseover', function () {
    marker[i].bindPopup('hi').openPopup.bind(marker[i])
});

コールバックとして無名関数を渡します。呼び出されると、必要な処理が実行されます。

私はリーフレットAPIにあまり詳しくないので(数か月前に使い始めたばかりです)、marker[i].bindPopup('hi').openPopup.bind(marker[i])同様に問題がある可能性があります。

于 2012-10-21T22:55:46.677 に答える