我正在使用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>
谢谢。
答案 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
我们的想法是找到一个所有点都适合的方格。