Я пытаюсь показать Polygon
под Nutiteq должным образом Bounding Box
, но я получаю что-то вроде этого. SetBoundings под Nutiteq не работает должным образом
и то, что я хочу
Мой код следующий
private void setClipBounds(Intent intent, MapView mapView) {
ArrayList<ArrayList<String>> limits = null;
if (intent.hasExtra(Constants._LIMITS)) {
limits = (ArrayList<ArrayList<String>>) intent.getSerializableExtra(Constants._LIMITS);
ArrayList<String> downLeft = limits.get(0);
ArrayList<String> upRight = limits.get(1);
double left = Double.parseDouble((String)(downLeft.get(0)));
double top = Double.parseDouble((String)(upRight.get(1)));
double right = Double.parseDouble((String)(upRight.get(0)));
double bottom = Double.parseDouble((String)(downLeft.get(1)));
MapPos downLeftPos = mapView.worldToScreen(left, bottom, 0);
MapPos rightUpPos = mapView.worldToScreen(right, top, 0);
Rect rect = new Rect(Math.round((float)downLeftPos.x), Math.round((float)rightUpPos.y), Math.round((float)rightUpPos.x), Math.round((float)downLeftPos.y));
Bounds bounds = new Bounds(left, top, right, bottom);
mapView.setBoundingBox(bounds, rect, false, false, false, 1000);
//mapView.setBoundingBox(bounds, false);
} else {
Log.i("TAG", "WmsMapActivity::setClipBounds:: NO limits!!!");
}
}
Может кто-нибудь сказать мне, что я делаю не так?
Заранее спасибо.
Возможно, @JaakL может лучше объяснить, как работает 'screenToWorld (...)', потому что я вызываю 'screenToWorld (...)' с 'MapPos' [11.396879,48.264547] и [11.400575,48.268546] и I get [x = -80971.58271822847, y = 289300.71649931633, z = 0.0] и [x = -80971.58252842074, y = 289300.71632176096, z = 0.0] в качестве ассоциированных экранных координат. Я тестирую свое приложение в Nexus 9, поэтому мне нужно получить координаты в Range [0x0,1535x2047], потому что размер экрана для этого устройства составляет 1536 * 2048. –
Конечно, если бы у меня не было ни панели действий, ни панели управления, с ними эффективные координаты MapView составляют 1536 * 1790. –
Предполагая, что вы используете проекцию EPSG3857, это ожидаемый результат - вы конвертируете координаты экрана в координаты карты. В случае EPSG3857 они находятся в диапазоне [-20037508.34, 20037508.34] – MarkT