「
Googleマップを表示する」を参照し, Googleマップが表示できるようにする.
- MainActivity.java
- Googleマップのインスタンスを取得する.
- MarkerOptionsのインスタンスを生成する.
- MarkerOptions#draggableメソッドで, ドラッグを有効にする.
- GoogleMap#addMarkerメソッドで, マーカーを登録する.
- GoogleMap#setOnMarkerClickListenerメソッドで, タップ時のイベントハンドラを登録する.
- onMarkerClickメソッドに, タップ時の処理を実装する.
注) 戻り値がtrueの場合, デフォルトの処理(Info Window表示等)は行われない.
- GoogleMap#setOnMarkerDragListenerメソッドで, ドラッグ時のイベントハンドラを登録する.
- onMarkerDragStart/onMarkerDrag/onMarkerDragEndメソッドに, ドラッグ時の処理を実装する.
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.OnMarkerClickListener;
import com.google.android.gms.maps.GoogleMap.OnMarkerDragListener;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
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));
// マーカー表示
MarkerOptions options = new MarkerOptions();
options.position(location);
options.title("六甲山");
options.draggable(true);
mMap.addMarker(options);
// タップ時のイベントハンドラ登録
mMap.setOnMarkerClickListener(new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "マーカータップ", Toast.LENGTH_LONG).show();
return false;
}
});
// ドラッグ時のイベントハンドラ登録
mMap.setOnMarkerDragListener(new OnMarkerDragListener() {
@Override
public void onMarkerDrag(Marker marker) {
// TODO Auto-generated method stub
// Toast.makeText(getApplicationContext(), "マーカードラッグ中", Toast.LENGTH_SHORT).show();
}
@Override
public void onMarkerDragEnd(Marker marker) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "マーカードラッグ終了", Toast.LENGTH_LONG).show();
}
@Override
public void onMarkerDragStart(Marker marker) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "マーカードラッグ開始", Toast.LENGTH_LONG).show();
}
});
}
}
}
SHARP SH-03C / Android 2.2
1) タップ
2) ドラッグ
↓
ドラッグ中(繰り返し)
↓