0

我正在使用 Bing Maps AJAX Control 7.0

我想向作为行驶路线一部分的图钉添加自定义事件处理程序。

我知道如何将自定义事件添加到我自己创建并引用的映射实体。但是构成行驶路线的实体是在内部创建并自动添加到地图中的。有没有一种方法可以在将它们添加到地图之前或之后附加和事件处理程序?

具体来说,我想将自定义 onmouseover 事件添加到行驶路线上的航点图钉,以便在悬停时显示自定义图标。我已经阅读了一个建议,通过 中的属性将带有伪:hover选择器的 css 类添加到图钉,但这不起作用。AJAX 控件本身使用 javascript 事件来更改鼠标悬停时的图标图像,因此设置css 属性永远不会起作用,它会被默认的悬停图标覆盖。typeNamePushpinOptionsbackground:hover

我需要向onmouseover驾驶航点图钉添加自定义事件,以便我可以显示自定义图标并禁用默认行为。我该怎么做呢?谢谢。

4

2 回答 2

1

我能想到的唯一解决方案是检查驱动路线图钉的 HTML 输出并破解它们的事件冒泡。我检查了驱动路线图钉的 HTML,并且使用 V7 ajax api,它们id似乎都以前缀开头DDWaypointPushpin。因此,hacky 的解决方案是在 DOM 中找到这些图钉并以某种方式覆盖它们的默认事件处理程序。例如,如果您想阻止图钉上 mouseover 事件的默认行为,您可以使用 jquery 匹配 id 字符串并绑定到 mouseover 事件,并防止它冒泡。

        $("div[id*='DDWaypointPushpin']").bind('mouseover', function (e) {
            //$(this) will match your pushpin div, do whatever you want with it
            // Stop the event from bubbling up, so the default MS mouseover behavior is prevented
            e.stopPropagation();
        });

如果要显示自定义图标,请在mouseover处理程序中查找 下的<img>元素$(this),并将其src属性更改为您喜欢的任何内容。

于 2012-05-21T23:13:05.533 回答
1

我发现该对象有一个未记录的属性PushpinOptions-hoverIcon

我向遍历地图上实体directionsUpdated的对象的事件添加了一些代码。DirectionsManager我查看了这些Waypoint实体,发现它们既有内部属性_icon又有_hoverIcon内部属性。因为里面有一个icon属性,所以PushpinOptions我检查了一个hoverIcon属性是否也可以使用,它可以!

据我所知,该hoverIcon物业没有记录在案。但这是一种更简单的方法,并且可能是将自定义悬停图像添加到图钉的正确方法。

如果将此情况报告给 Micorsoft 会有所帮助,以便他们更新文档。我以前从未向 Microsoft 报告过文档错误,所以如果您知道执行此操作的最佳方法,请告诉我。

于 2012-05-22T23:13:14.027 回答