2016-07-08 4 views
0

Я новичок в разработке приложений для Android. И я хочу реализовать моментальный снимок на карте Google, вызванный информационным окном на карте, тогда мне нужно вернуть изображение и обрезать его. Вот мой код, но он не работает каждый раз, когда я касаюсь информационного окна.Как реализовать моментальный снимок на карте google в android

Здесь код моментального снимка. Когда я отлаживаю его, я обнаружил, что он перепрыгнул через метод моментальных снимков, поэтому я думаю, что, возможно, неправильное использование snakshotReadyCallback.

public void takeSnapShot(){ 
    mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
     @Override 
     public void onInfoWindowClick(Marker marker) { 
      //final ImageView snapshotHolder = (ImageView) findViewById(R.id.picture); 
      final GoogleMap.SnapshotReadyCallback callback = new GoogleMap.SnapshotReadyCallback() { 
       @Override 
       public void onSnapshotReady(Bitmap snapshot) { 
        //snapshotHolder.setImageBitmap(snapshot); 
        try { 
         FileOutputStream out = new FileOutputStream("test.png"); 
         snapshot.compress(Bitmap.CompressFormat.PNG, 90, out); 
         Toast.makeText(MapsActivity.this, "Capture OK", Toast.LENGTH_LONG).show(); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
      }; 
      mMap.snapshot(callback); 
     } 
    }); 
} 

И вот код урожая.

 //crop the image 
public void performCrop(){ 
    try{ 
     Intent cropIntent= new Intent("com.android.camera.action.CROP"); 
     cropIntent.setDataAndType(picUri,"map/*"); 
     cropIntent.putExtra("crop", "true"); 
     cropIntent.putExtra("aspectX", 2); 
     cropIntent.putExtra("aspectY", 1); 
     cropIntent.putExtra("outputX", 256); 
     cropIntent.putExtra("outputY", 256); 
     cropIntent.putExtra("return-data", true); 
     startActivityForResult(cropIntent, CROP_PIC); 
    }catch (ActivityNotFoundException anfe){ 
     Toast.makeText(this, "this device doesn't support crop", Toast.LENGTH_SHORT).show(); 
    } 
} 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == CROP_PIC) { 
      Bundle extras = data.getExtras(); 
      Bitmap thePic = extras.getParcelable("data"); 
      ImageView picView = (ImageView) findViewById(R.id.picture); 
      picView.setImageBitmap(thePic); 
     } 
    } 
+0

Вы нашли решение для thi –

ответ

0

Добро пожаловать в stackoverflow.

Реализуя PlaceAutocompleteFragment и PlaceAutocompleteActivity, вы можете иметь возможность получить Google место.

См. Мой question and answer, который поможет вам.

+0

Спасибо, но поскольку я не использую фрагмент автозаполнения, я не думаю, что реализация будет работать для меня, и я использую PlaceAutocompleteActivity, но она не может быть реализована – Qianyuan