ПРОБЛЕМА:
У меня есть ограничительная рамка {N: 53.2219112;E: -6,1409208;S: 53.1953286;W: -6.1784236}, на котором я хочу сосредоточиться.
Я называю MapView.zoomToBoundingBox
на этой ограничительной рамке, и по какой-то причине это увеличивает / центрирует {N: 54.9918;E: -8,3993;S: 54,9651;W: -8.4716} (грубо говоря, я оценил это по просмотру и отображению области на OpenStreetMap.org).
Странно то, что когда я звоню MapView.getBoundingBox
, я получаю {N: 78.34941069014627;E: 28,125;S: +7,01366792756663;W: -50.625}, который не имеет ничего общего.
ДЛЯ УЧЕТА:
1) Мой MapView занимает только часть экрана - только верхнююКак показано ниже, возможно, правильные размеры вида рассчитываются неправильно?
2) Когда я вручную увеличиваю масштаб и центрируюсь на boundingBox.getCenterWithDateLine()
, вид центрируется в центре ограничительной рамки - так чтоограничивает поле ввода.
3) Я использую свой собственный класс ExtendedMapView, который расширяет MapView, чтобы сохранить все функции MapView в одном месте. Не могу представить, что это вызывает проблему, но этоСтоит отметить.
4) Я звоню zoomToBoundingBox в onLayout, как предлагается в этой теме: 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());
}
}