2016-05-19 6 views
1

にセンター、私はGeopointsのコレクションを持っているし、私はこのようなポリラインを作成します:OSMDroid - 私はOSMDroidで働いているポリライン

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

このコードは正常に動作しますが、問題は私が集中する必要があるということです地図上のこのルート。真ん中の点を見つけ出し、地図の中心を見つけることができることは分かっていますが、正しいズームを設定する方法はわかりません。また、ポリラインの中心をより効率的に見つける方法があるかどうかわかりません。

ありがとうございます。

答えて

1

可能な解決策の1つは、方法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 

アイデアは、すべてのポイントが収まる場所を見つけることです。

関連する問題