区分程序化Bing AJAX地图导航与用户平移/缩放和窗口大小调整

时间:2012-07-11 21:29:01

标签: javascript bing-maps

我有一个场景,我需要不断保持特定LocationRect最佳匹配(即map.setView({ bounds: myLocationRect })的结果)在地图中可见的窗口调整大小或平板电脑方向更改,直到用户与映射以更改当前视图。

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

我已经尝试通过跟踪地图元素的先前宽度/高度并听取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
}

1 个答案:

答案 0 :(得分:0)

如果你似乎无法让targetviewchanged工作,也许值得重新考虑跟踪其他事件。

您可以使用pointer.js更轻松地跟踪所有不同的可能互动。这样,您只需捕获几种类型的事件,这些事件在引擎盖下代表了许多类型的事件。如果它与Bing Maps很好地配合,那么可能会解决鼠标,触摸和可能的手势事件的问题。

我怀疑这可能不会解决键盘事件的问题,但也许监控这些问题是可以控制的。