Androidプログラマへの道 〜 Moonlight 明日香 〜 - 地図タッチイベントを取得する

Google Maps Android API v2

Googleマップの画面上をタッチしたイベントを取得するには, GoogleMap.OnMapClickListener/OnMapLongClickListenerインタフェースを利用する.

タッチイベントの取得

Googleマップを表示する」を参照し, Googleマップが表示できるようにする.
  • MainActivity.java
    • GoogleMapのインスタンスを取得する.
    • GoogleMap#setOnMapClickListenerメソッドで, タップ時のイベントハンドラを登録する.
    • onMapClickメソッドに, タップ時の処理を実装する.
    • GoogleMap#setOnMapLongClickListenerメソッドで, 長押し時のイベントハンドタを登録する.
    • onMapLongClickメソッドに, 長押し時の処理を実装する.
package com.moonlight_aska.android.googlemapv2;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnMapClickListener;
import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.widget.Toast;

public class MainActivity extends FragmentActivity {
  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) {
      // タップ時のイベントハンドラ登録
      mMap.setOnMapClickListener(new OnMapClickListener() {
        @Override
        public void onMapClick(LatLng point) {
          // TODO Auto-generated method stub
          Toast.makeText(getApplicationContext(), "タップ位置\n緯度:" + point.latitude + "\n経度:" + point.longitude, Toast.LENGTH_LONG).show();
        }
      });

      // 長押し時のイベントハンドラ登録
      mMap.setOnMapLongClickListener(new OnMapLongClickListener() {
        @Override
        public void onMapLongClick(LatLng point) {
          // TODO Auto-generated method stub
          Toast.makeText(getApplicationContext(), "長押し位置\n緯度:" + point.latitude + "\n経度:" + point.longitude, Toast.LENGTH_LONG).show();
        }
      });
    }
  }
}
  • 動作例
SHARP SH-03C / Android 2.2
1) タップ


2) 長押し