gpt4 book ai didi

bing-maps - 为 bing map 控件禁用 'grab' 平移

转载 作者:行者123 更新时间:2023-12-05 01:28:39 24 4
gpt4 key购买 nike

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

我试过这个 -
var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), { credentials: "bing maps credentials", mapTypeId: Microsoft.Maps.MapTypeId.road, disablePanning: true});
但是设置disablePanning map 选项中的属性不仅禁用抓取平移,还禁用缩放平移。缩放不会完全禁用,而是只会放大和缩小 map 的中心。毫无疑问,您会遇到缩放平移,您可以使用鼠标滚轮放大光标下的 map ,因此可以通过放大、缩小和移动光标来平移。我想启用缩放平移,但要禁用抓取平移(用户按下鼠标并拖动它)。

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

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

当然,必须有一个简单的方法来做到这一点。它是如何完成的?

最佳答案

我认为没有可以设置的 map 选项来实现您想要的行为(启用缩放平移/禁用抓取平移)。但是,有一种简单的方法可以破解它。平移是通过用户在 map 上点击并移动鼠标来启动的。因此,如果您可以提供自己的 mousedown map 的事件处理程序,并在其实现中阻止 mousedown 的默认行为,你应该很高兴去。结果是 handled属性(property)在 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.
});

有了这个, mousedown map 上的事件由您处理并被 map 忽略。因此,当用户尝试使用鼠标平移 map 时,没有任何 react 。他们仍然可以像往常一样单击和缩放。请记住,如果 map 上还有其他元素(例如图钉和形状),这将阻止 mousedown事件到达他们。所以任何 mousedown您在其上注册的事件处理程序将不会被调用。当您需要另一个 mousedown 时,您可以通过取消注册上述处理程序来处理此问题。要调用的事件(首选),或在您的 MouseEventArgs 上询问目标属性看看是什么触发了mousedown(凌乱)。

关于bing-maps - 为 bing map 控件禁用 'grab' 平移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10363338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com