2016-04-23 10 views
0

マップをポリラインの境界に設定した後、Googleマップイメージのスナップショットを作成しようとしています。私はmoveToBounds()と個別にうまく動作するSnapshotの両方を行うためにStackExchangeで見つかった別々のコードサンプルを使用しましたが、マップが更新される前にスナップショットがマップイメージに順番に実行されます。私はOnCameraChangeListenerを挿入する必要があると仮定しますが、動作させることはできません。私は何とかコールバックを入れ子にする必要がありますか?お知らせ下さい。Android Googleマップスナップショットの前にカメラが更新されない

public void mapCapture() { 
    moveToBounds(gpsTrackingPolyline); 
    mMap.snapshot(new GoogleMap.SnapshotReadyCallback() { 
     public void onSnapshotReady(Bitmap bitmap) { 
      // Write image to disk 
      try { 
       File bmpFile = new File(getApplicationContext().getExternalFilesDir(null), DEFAULT_BMP_FILENAME); 
       FileOutputStream out = new FileOutputStream(bmpFile); 
       bitmap.compress(Bitmap.CompressFormat.PNG, 90, out); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

private void moveToBounds(Polyline p) 
{ 
    LatLngBounds.Builder builder = new LatLngBounds.Builder(); 
    List<LatLng> arr = p.getPoints(); 
    for(int i = 0; i < arr.size();i++){ 
     builder.include(arr.get(i)); 
    } 
    LatLngBounds bounds = builder.build(); 
    int padding = 40; // offset from edges of the map in pixels 
    CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding); 
    mMap.animateCamera(cu); 
} 

答えて

0

解決策が見つかったのか、まだ必要な場合はわかりません。しかし、それはまだここに行く。はい、マップがアニメーションを終了したときに通知するコールバックが必要です。次のようにしてください:

mMap.animateCamera(cu, new GoogleMap.CancelableCallback() { 

       @Override 
       public void onFinish() { 
        //your code related to snapshot 
        mMap.snapshot(new GoogleMap.SnapshotReadyCallback() { 
         public void onSnapshotReady(Bitmap bitmap) { 
         // Write image to disk 
         //rest of your code 
         }); 
       } 
       @Override 
       public void onCancel() { 
        // TODO Auto-generated method stub 
       } 
      }); 
関連する問題