最終更新:
moonlight_aska 2013年09月29日(日) 15:23:33履歴
「Googleマップを表示する」を参照し, Googleマップが表示できるようにする.

- MainActivity.java
- Googleマップのインスタンスを取得する.
- GoogleMap#snapshotメソッドで, スナップショット撮影完了時のイベントハンドラを登録する.
- onSnapshotReadyメソッドに, 撮影完了時の処理を実装する. 撮影された画像は, 引数bitmapで渡されてくる.
package com.moonlight_aska.android.googlemapv2;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
import com.google.android.gms.maps.GoogleMap.SnapshotReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends FragmentActivity {
// 六甲山:北緯34度46分41秒, 東経135度15分49秒
private double mLatitude = 34.0d + 46.0d/60 + 41.0d/(60*60);
private double mLongitude = 135.0d + 15.0d/60 + 49.0d/(60*60);
private GoogleMap mMap = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMap = ( (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map) ).getMap();
if (mMap != null) {
LatLng location = new LatLng(mLatitude, mLongitude);
CameraPosition cameraPos = new CameraPosition.Builder()
.target(location).zoom(12.0f)
.build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPos));
// 長押し
mMap.setOnMapLongClickListener(new OnMapLongClickListener() {
@Override
public void onMapLongClick(LatLng point) {
// TODO Auto-generated method stub
mMap.snapshot(new SnapshotReadyCallback() {
@Override
public void onSnapshotReady(Bitmap bitmap) {
// TODO Auto-generated method stub
// スナップショット画像の縮小
Matrix mat = new Matrix();
mat.postScale(0.3f, 0.3f);
Bitmap cnv = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), mat, true);
// スナップショット画像をトースト表示
ImageView view = new ImageView(getApplicationContext());
view.setImageBitmap(cnv);
Toast toast = new Toast(getApplicationContext());
toast.setView(view);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();
}
});
}
});
}
}
}
- 動作例

このページへのコメント
askaです.
インテントを使って, 別のActivityを呼び出す際に, 画像データを渡せばよいかと...
「画面間でデータを受け渡しする」参照してください.
スナップショットをトースト表示することができました。トースト表示ではなく、別のActivityで画像として表示するには、どうすればよいのでしょうか。もし、この「コメントする」で教えて頂けるならば、宜しくお願いします。