【发布时间】:2018-11-05 04:38:19
【问题描述】:
问题:
我有一个边界框 {N:53.2219112;电子:-6.1409208; S:53.1953286; W:-6.1784236} 我想重点关注的。
我在那个边界框上调用 MapView.zoomToBoundingBox 并且由于某种原因它在 {N:54.9918; 上缩放/居中。电子:-8.3993; S:54.9651; W:-8.4716}(粗略地说,我通过查看和 OpenStreetMap.org 上的显示区域估计了这一点)。
奇怪的是,当我打电话给MapView.getBoundingBox 时,我得到了 {N:78.34941069014627;电子:28.125; S:7.01366792756663; W:-50.625},这与任何事情都没有关系。
考虑:
1)我的 MapView 只占据屏幕的一部分 - 只是顶部,如下所示,所以可能没有正确计算正确的视图尺寸?
2)当我在boundingBox.getCenterWithDateLine() 上手动缩放和居中时,视图以边界框的中心为中心——所以输入的边界框是正确的。
3) 我正在使用我自己的扩展 MapView 的“ExtendedMapView”类,作为将 MapView 的所有功能保存在一个地方的一种方式,我无法想象这是导致问题的原因,但值得注意。
4) 我在 onLayout 中调用 zoomToBoundingBox,如该线程中所建议:https://github.com/osmdroid/osmdroid/issues/236
5) 我正在使用 OSMdroid 6.0.1
代码:
在 ExtendedMapView 中调用:
@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, true);
//output: N:53.2219112; E:-6.1409208; S:53.1953286; W:-6.1784236
Log.d(Constants.SkiCompanionDebug, "Required BB: "+boundingBox.toString());
//output: N:78.34941069014627; E:28.125; S:7.01366792756663; W:-50.625
Log.d(Constants.SkiCompanionDebug, "Actual BB: "+getBoundingBox().toString());
}
}
【问题讨论】:
标签: java android zooming osmdroid bounding-box