2012-04-07 37 views
1

我想要在我的針腳上發生事件。一個是當用戶點擊一個pin時,一個點擊方法被調用。第二種方法可以在用戶拖動引腳時進行。使用Click事件和Dragend事件

目前,我有以下事件處理程序:

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

的問題是,當用戶只點擊圖釘時,endDragHandler被稱爲第一,然後調用點擊方法。

有關如何解決此問題的任何建議?

感謝

回答

1

我最終提出的解決方案是檢查當前位置,看看它是否仍然在同一個地方。

1

這看來確實奇怪,click之前dragend火災,但你是正確的,這是事實確實如此。我能想到的最簡單的解決方法是這樣的:而不是訂閱的click事件,suscribe到mousedown事件,而不是:

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

mousedowndragend之前進行發射。所以,如果你可以放棄使用'mousedown',我會建議你這樣做。如果您必須使用click,事情可能會變得複雜。

+0

我其實也試過mousedown。它沒有工作,因爲它有相同的結果。 – Johnston 2012-04-07 01:56:19

+0

@Johnston那很奇怪。當我在bing maps javascript api的v7中嘗試它時,mousedown會在dragend之前被調用。 – 2012-04-07 03:22:28

0

雖然問題已經回答了,我發現在CodeProject上this環節的解決方案,類似於@johnston以上建議:

基本上對圖釘的單擊事件,新老經/緯度被比較在3個十進制值中。如果它匹配它假設它的一個點擊事件,否則它是一個拖動事件。 我很驚訝,爲什麼Bing團隊沒有把自己陷入這個奇怪的問題,這讓我花了幾個小時來解決。 Bing API本身應該解決這個問題。