我开发了一个基于Phonegap的地图Android应用程序,带有leafletjs和jQueryMobile。此应用程序有两个页面。第一页是地图视图,第二页是由一些输入表单组成的首选项。
当我在第二页集中输入表单(只是!)并转移到第一页时,由于某种原因,地图边界发生了变化。
例如。在改变之前。西南是明显的东北形式。
L.map.getBounds().toBBoxString(); // 135.42702913284302,34.68926290260606,135.42702913284302,34.68926290260606
在集中输入表单之后。西南与东北相同!
L.map.getBounds().toBBoxString(); // 135.42702913284302,34.68926290260606,135.4544949531555,34.70252981597828
还有其他人有同样的问题吗?我找不到为地图设置边界的方法。
以下是我假设发生的事情:
- 聚焦输入字段
- 输入字段上的样式以某种方式触发 Windows.resize 事件
- 传单地图大小无效
- 当您请求边界时,它会读取新大小(因为旧大小无效),该大小为零,因为地图是隐藏的 - 大概
这是因为getBounds
调用:
getPixelBounds: function () {
var topLeftPoint = this._getTopLeftPoint();
return new L.Bounds(topLeftPoint, topLeftPoint.add(this.getSize()));
},
topLeftPoint
完好无损,但大小为 [0,0],得到 NE = SW。
可能的解决方案:
A. 在转换到第二页之前缓存边界B. 调查输入焦点触发窗口大小调整的原因