OSMDroid - 中心到折线

时间:2016-05-19 13:51:37

标签: android osmdroid polyline

我正在使用OSMDroid,我有Geopoints的集合,然后我创建了一个像这样的折线:

private void drawPolyline(ArrayList<GeoPoint> polyline) {
    Polyline line = new Polyline(this);
    line.setPoints(polyline);
    line.setWidth(5f);
    line.setGeodesic(true);
    mv_map.getOverlays().add(line);
    mv_map.invalidate();
}

此代码工作正常,但问题是我需要将此路由聚焦在地图中。我知道我可以找到一个中点并将地图居中,但我不知道如何设置正确的缩放,我不知道是否已经有办法更有效地找到折线的中心。 / p>

谢谢。

1 个答案:

答案 0 :(得分:2)

一种可能的解决方案可以使用方法zoomToBoundingBox。以下是关于如何将其与点列表一起使用的小样本。

                    int minLat = Integer.MAX_VALUE;
                    int maxLat = Integer.MIN_VALUE;
                    int minLong = Integer.MAX_VALUE;
                    int maxLong = Integer.MIN_VALUE;

                    for (GeoPoint point : polylinePoints) {       
                        if (point.getLatitudeE6() < minLat)
                            minLat = point.getLatitudeE6();
                        if (point.getLatitudeE6() > maxLat)
                            maxLat = point.getLatitudeE6();
                        if (point.getLongitudeE6() < minLong)
                            minLong = point.getLongitudeE6();
                        if (point.getLongitudeE6() > maxLong)
                            maxLong = point.getLongitudeE6();
                    }

                    BoundingBoxE6 boundingBox = new BoundingBoxE6(maxLat, maxLong, minLat, minLong);
                    osmMap.zoomToBoundingBox(boundingBox.increaseByScale(1.3f));//this is some sort of padding to your bounding box

我们的想法是找到一个所有点都适合的方格。