如何缩放到特定标记 — osmdroid API(版本 5.2@aar)

How to zoom to specific marker — osmdroid API (version 5.2@aar)

标记示例:

            Marker m = new Marker(mapOSM);
            //m.setTitle("LOL");
            m.setSnippet("bla bla bla);
            m.setPosition(new GeoPoint(cenario.getLatitude(), cenario.getLongitude()));

            Drawable icon = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_action_place, null);
            icon.setColorFilter(getResources().getColor(R.color.md_green_400), PorterDuff.Mode.MULTIPLY);

            m.setIcon(icon);

            mapOSM.getOverlays().add(m);

我知道如何为某个位置设置动画:

mapOSM.getController().animateTo(m.getPosition());

但是如何缩放到特定标记??

丑陋的解决方案:

去做

mapOSM.getController().setZoom(10);

然后做

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            mapOSM.getController().animateTo(new GeoPoint(x, y));
        }
    }, 300);

试试这个:

BoundingBoxE6 bBox = new BoundingBoxE6(iNorth, iEast, iSouth, iWest);

osmView.getController().zoomToSpan(bBox.getLatitudeSpanE6(), bBox.getLongitudeSpanE6());
osmView.getController().setCenter(bBox.getCenter());

获取您想去的地方的边界框,然后缩放到适合您的 Bbox 的级别,并将视图的中心设置为框的中心。