如何禁用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 maps网站上使用my places编辑器时的功能非常相似.当使用折线工具绘制在地图上抢平移被禁用,变焦平移启用就像我想.我实际上打算创建一个类似于我的场所编辑器中的折线工具的自定义绘图工具.
我一直在研究api,但还没有发现如何做到这一点.我也试图发现它是如何在主要的bing地图网站上完成的,但随着javascript代码全部缩小,我发现它非常困难.我已经设法弄清楚折线工具劫持了鼠标,但这就是全部.
当然必须有一个简单的方法来做到这一点.怎么做?
我不认为你可以设置一个地图选项来实现你想要的行为(启用缩放平移/禁用抓取平移).但是,有一种简单的方法来破解它.用户在地图上单击并移动鼠标即可启动平移.因此,如果您可以mousedown为地图提供自己的事件处理程序,并且在其实现中阻止了默认行为mousedown,那么您应该好好去.结果处理属性MouseEventArgs就是这样:
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.
});
Run Code Online (Sandbox Code Playgroud)
这样,mousedown地图上的事件将由您处理并被地图忽略.因此,当用户尝试使用鼠标平移地图时,没有任何反应.他们仍然可以照常点击和缩放.请记住,如果地图上有其他元素,如图钉和形状,这将阻止mousedown事件到达它们.因此,mousedown您在其上注册的任何事件处理程序都不会被调用.您可以通过在希望mousedown调用其他事件(最好)时取消注册上述处理程序来处理此问题,或者在您的目标属性上插入目标属性MouseEventArgs以查看触发了mousedown(messy )的内容.
| 归档时间: |
|
| 查看次数: |
2581 次 |
| 最近记录: |