【问题标题】:disabling 'grab' panning for bing maps control禁用 bing 地图控件的“抓取”平移
【发布时间】:2012-04-28 12:07:28
【问题描述】:

如何仅禁用 bing 地图 AJAX 控件 7.0 平移的 grab 方面?

我已经试过了-

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

但是在地图选项中设置disablePanning 属性不仅会禁用抓取平移,还会禁用缩放平移。缩放不会完全禁用,而是只会在地图中心放大和缩小。毫无疑问,您会遇到zoom 平移,您可以使用鼠标滚轮放大光标下的地图,因此可以通过放大和缩小以及移动光标来平移。我想启用 zoom 平移,但要禁用 grab 平移(用户按下鼠标并拖动鼠标)。

我的目标是实现与在主 bing 地图网站上使用 我的位置编辑器 时非常相似的功能。当使用折线工具在地图上绘制时,grab 平移被禁用,而 zoom 平移被启用,就像我想要的那样。我实际上打算创建一个自定义绘图工具,类似于 我的位置编辑器中的折线工具。

我一直在研究 api,但还没有发现如何去做。我也试图发现它是如何在主要的 bing 地图网站上完成的,但由于 javascript 代码被全部缩小,我发现它非常困难。我设法发现折线工具劫持鼠标,但仅此而已。

当然必须有一个简单的方法来做到这一点。是怎么做到的?

【问题讨论】:

    标签: bing-maps


    【解决方案1】:

    我认为没有可以设置的地图选项来实现您想要的行为(启用缩放平移/禁用抓取平移)。但是,有一种简单的方法可以破解它。通过用户在地图上单击并移动鼠标来启动平移。因此,如果您可以为地图提供自己的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(混乱)的原因。

    【讨论】:

      猜你喜欢
      • 2018-05-21
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      相关资源
      最近更新 更多