Javascript 区分AJAX地图导航与用户平移/缩放和窗口大小

Javascript 区分AJAX地图导航与用户平移/缩放和窗口大小,javascript,bing-maps,Javascript,Bing Maps,我有一个场景,我需要持续保持特定的LocationRect最佳匹配(即map.setView({bounds:myLocationRect}))在地图中可见,直到用户与地图交互以更改当前视图为止 我需要一些关于如何做到这一点的指导。考虑到有多少不同的鼠标和键盘交互可以改变视图,我不想过滤所有这些交互;过滤掉包含HTML元素的映射改变大小的场景似乎更合适 我已经尝试通过跟踪map元素之前的宽度/高度并收听targetviewchanged事件来实现这一点;然而,这对我来说并不可靠。原因是,如果我重

我有一个场景,我需要持续保持特定的
LocationRect
最佳匹配(即
map.setView({bounds:myLocationRect})
)在地图中可见,直到用户与地图交互以更改当前视图为止

我需要一些关于如何做到这一点的指导。考虑到有多少不同的鼠标和键盘交互可以改变视图,我不想过滤所有这些交互;过滤掉包含HTML元素的映射改变大小的场景似乎更合适

我已经尝试通过跟踪map元素之前的宽度/高度并收听
targetviewchanged
事件来实现这一点;然而,这对我来说并不可靠。原因是,如果我重置视图,我无法可靠地暂停收听
targetviewchanged
。例如:

function resetView() {
    if(!_keepAoiInView) return; // unhook setInterval as well; omitted for brevity

    _suspend = true;
    _map.setView({ bounds: theBoundsIWant });
    _suspend = false;
}

function ontargetviewchanged() {
    // This suspend check doesn't work - 
    //  resetView() isn't always lower in the call stack;
    //  therefore, _suspend is set back to false before the
    //  targetviewchanged event fires.
    if(_suspend) return;

    _keepAoiInView = false;  // unhook setInterval as well; omitted for brevity
}

如果您似乎无法使
targetviewchanged
正常工作,也许值得重新考虑跟踪其他事件

您可能能够更轻松地使用跟踪所有不同的可能交互。这样,您只需要捕获一些类型的事件,这些事件在后台表示许多类型的事件。如果它能很好地与Bing地图配合使用,可能会解决鼠标、触摸和手势事件的问题


我怀疑,这可能无法解决键盘事件的问题,但也许监控这些事件也是可以管理的。

难道唯一的鼠标事件不是地图元素上的
onmouseup
ontouchend
,因为任何用户交互都会涉及某种形式的点击/点击或拖动吗?@TorstenWalter,还有滚轮。和一些键盘事件(箭头键,加号,减号),以及。。。(?)还有,别忘了捏手势。。。这就是为什么单独过滤每个事件似乎是错误的方法。