2012-04-07 12 views
1

私のピンでイベントをしたいと思っています。 1つは、ユーザーがピンをクリックするとクリックメソッドが呼び出されることです。 2番目の方法は、ユーザーがピンをドラッグするときに使用します。ClickイベントとDragendイベントの使用

は、私は現在、次のイベントハンドラを持っている:

Microsoft.Maps.Events.addHandler(pin, 'click', displayInfobox); 
Microsoft.Maps.Events.addHandler(pin, "dragend", endDragHandler); 

問題は、ユーザーが唯一のピンをクリックすると、endDragHandlerが最初に呼び出されるということで、その後、クリックメソッドを呼び出します。

これを修正する方法に関する提案はありますか?確かにdragend火災click前に、しかし、あなたがしていることを奇妙に思える

おかげ

答えて

1

私が最後に解決した解決策は、現在の場所を確認し、それがまだ同じ場所にあるかどうかを確認することでした。

1

は右、これは確かにケースです。私は考えることができる最も簡単な回避策はこれです:むしろclickイベントに加入するよりも、代わりにmousedownイベントにsuscribe:

Microsoft.Maps.Events.addHandler(pin, 'mousedown', displayInfobox); 
Microsoft.Maps.Events.addHandler(pin, "dragend", endDragHandler); 

mousedowndragend前に発生します。だから、あなたが 'mousedown'を使って逃げることができるなら、私はあなたがこれをすることを提案するでしょう。 clickを使用する必要がある場合、状況が複雑になる可能性があります。

+0

私も実際にマウスを使ってみました。それは同じ結果を持っていたかのどちらかの仕事をしませんでした。 – Johnston

+0

@ジョンストンそれは奇妙です。私がving map javascript apiのv7で試してみると、mousedownはdragする前に呼び出されます。 –

0

質問が既に回答されているが、私は上記の提案@johnstonものと同様、this CodeProjectのリンクで解決策を見つけた:新旧の緯度/経度が比較されている、画鋲のクリックイベントに基本的に

3小数点以下の値で指定します。想定されているそのクリックイベントに一致する場合はそれを、それ以外の場合はドラッグイベントを返します。 私はビンのチームがこの奇妙な問題に陥っていない理由に驚きました。 Bing API自体がこの問題に対処する必要があります。

関連する問題