我有一个场景,我需要在窗口调整大小或平板电脑方向更改时不断保持特定的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
}