如何缩放到特定标记 — 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 的级别,并将视图的中心设置为框的中心。
标记示例:
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 的级别,并将视图的中心设置为框的中心。