1

我想在我的别针上进行活动。当用户单击 pin 时调用 click 方法。当用户拖动图钉时,第二种方法是 dragend。

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

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

问题是当用户只点击图钉时,endDragHandler 会先被调用,然后再调用 click 方法。

对于如何解决这个问题,有任何的建议吗?

谢谢

4

3 回答 3

1

dragend之前触发确实看起来很奇怪click,但你是对的,情况确实如此。我能想到的最简单的解决方法是:与其订阅click事件,不如订阅mousedown事件:

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

mousedown之前会开火dragend。因此,如果您可以避免使用“mousedown”,我建议您这样做。如果你必须使用click,事情可能会变得复杂。

于 2012-04-07T01:45:07.670 回答
1

我最终想到的解决方案是检查当前位置,看看它是否仍在同一个位置。

于 2012-04-07T02:51:17.690 回答
0

虽然这个问题已经得到解答,但我在这个CodeProject 链接上找到了一个解决方案,类似于上面@johnston 的建议:

基本上在图钉的点击事件中,新旧纬度/经度以 3 个十进制值进行比较。如果它匹配它假定它是一个点击事件,否则它是一个拖动事件。我很惊讶为什么 Bing 团队没有调查这个奇怪的问题,我花了好几个小时才解决这个问题。Bing API 本身应该解决这个问题。

于 2017-03-29T07:35:52.697 回答