OSMDroid - 将地图中心置于折线路径的中心

4

我正在使用OSMDroid,我有一组Geopoints,然后我创建了一个Polyline,代码如下:

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();
}

这段代码运行良好,但问题在于我需要在地图上聚焦这条路线。我知道可以找到中点并将地图居中显示,但我不知道如何设置正确的缩放级别,也不知道是否已经有更有效的方法来找到折线的中心点。
谢谢。
2个回答

3

一种可能的解决方案是使用方法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

这个想法是找到一个正方形,让你所有的点都能适应其中。


0

请添加你的代码的解释。 - allexiusw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接