问题:
我有一个边界框{N:53.2219112; E:-6.1409208; S:53.1953286; W:-6.1784236}我希望关注它。
我在该边界框上调用SELECT sum(name is not null) as cnt FROM profile;
,由于某种原因,它是缩放/居中{N:54.9918; E:-8.3993; S:54.9651; W:-8.4716}(粗略地说,我从OpenStreetMap.org的观察和显示区域估计了这个)。
奇怪的是,当我打电话给MapView.zoomToBoundingBox
时,我得到{N:78.34941069014627; E:28.125; S:7.01366792756663; W:-50.625},这与任何事都无关。
考虑:
1)我的MapView只占据屏幕的一部分 - 就像上面一样,如下所示,所以正确的视图尺寸可能没有正确计算?
2)当我手动缩放并居中MapView.getBoundingBox
时,视图以边界框的中心为中心 - 因此输入边界框是正确的。
3)我正在使用我自己的'ExtendedMapView'类来扩展MapView,作为一种将MapView的所有功能保存在一个地方的方法,我无法想象这会导致问题,但值得注意。
4)我在onLayout中调用zoomToBoundingBox,如此线程所示:https://github.com/osmdroid/osmdroid/issues/236
5)我正在使用OSMdroid 6.0.1
CODE:
在ExtendedMapView中调用:
boundingBox.getCenterWithDateLine()
答案 0 :(得分:0)
经过几天的愚弄,我找到了解决方案。将动画设置为TRUE时,zoomToBoundingBox
会出现错误。我通过将animate设置为FALSE并在之后调用invalidate()
来解决问题。
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
if(boundingBox != null){
zoomToBoundingBox(boundingBox, false);
invalidate();
}
}