为bing地图控件禁用'抓取'平移

时间:2012-04-28 12:07:28

标签: bing-maps

如何禁用bing map AJAX control 7.0的平移抓取方面?

我试过这个 -

var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), { credentials: "bing maps credentials", mapTypeId: Microsoft.Maps.MapTypeId.road, disablePanning: true});

但是,在地图选项中设置disablePanning属性不仅可以禁用抓取平移,还可以缩放平移。缩放不会完全禁用,而只会放大和缩小地图的中心。毫无疑问,你会来到翻过的缩放的平移,你可以使用鼠标滚轮放大光标下的地图上,因此可以通过放大和缩小和移动光标平移。我想有变焦的摇启用,但的平移(其中用户按下鼠标拖动周围的话)被禁用。

我的目标是在主要的bing地图网站上使用我的地方编辑器时非常相似的功能。当使用折线工具在地图上绘图时,抓取已禁用平移,并且正如我所希望的那样启用缩放平移。我实际上打算创建一个类似于我的位置编辑器中的折线工具的自定义绘图工具。

我一直在研究api,但还没有发现如何做到这一点。我也试图发现它是如何在主要的bing地图网站上完成的,但随着javascript代码全部缩小,我发现它非常困难。我已经设法收集折线工具劫持鼠标,但这就是全部。

肯定有一种简单的方法可以做到这一点。怎么做?

1 个答案:

答案 0 :(得分:5)

我认为您无法设置地图选项以实现所需的行为(启用缩放平移/禁用抓取平移)。但是,有一种简单的方法来破解它。用户在地图上单击并移动鼠标即可启动平移。因此,如果您可以为地图提供自己的mousedown事件处理程序,并且在其实现中阻止了mousedown的默认行为,那么您应该很高兴。结果MouseEventArgs上的handled属性就是这样:

Microsoft.Maps.Events.addHandler(yourMapObj, 'mousedown', function (mouseEvent) {
    mouseEvent.handled = true; //A boolean indicating whether the event is handled. If this property is set to true, the default map control behavior for the event is cancelled.
}); 

有了这个,地图上的mousedown事件将由您处理并被地图忽略。因此,当用户尝试使用鼠标平移地图时,没有任何反应。他们仍然可以照常点击和缩放。请注意,如果地图上有其他元素(如图钉和形状),则会阻止mousedown事件到达它们。因此,您在其上注册的任何mousedown事件处理程序都不会被调用。您可以通过在希望调用其他mousedown事件(取消)时取消注册上述处理程序来处理此问题,或者在MouseEventArgs上插入目标属性以查看触发mousedown(messy)的内容。