C/C++プログラマの管理者が, Androidプログラムにチャレンジ. AndroidプログラミングのTipsをメモっていく予定です.

Google Maps Android API v2

Googleマップの描画が完了してから何か処理を行いたい場合には, OnMapLoadedCallbackインタフェースを利用する.

描画完了時の処理

GoogleMapインスタンスの取得方法が変わり, getMap()メソッドは非推奨となった.
  • java/xxx/MapsActivity.java
    • getSupportFragmentManager#findFragmentByIdメソッドで, FragmentManeagerを取得する.
    • MapFragment#getMapAsyncメソッドで, GoogleMapインスタンス生成完了時に呼ばれるイベントハンドラを登録する.
    • onMapReadyメソッドで, GoogleMapインスタンスを取得する.
    • GoogleMap#setOnMapLoadedCallbackメソッドで, 地図の描画完了時に呼ばれるイベントハンドラを登録する.
    • onMapLoadedメソッドに, 描画完了時の処理を実装する.
package com.moonlight_aska.android.web.mapsample01;

import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.widget.Toast;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnMapLoadedCallback;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, OnMapLoadedCallback {
  private GoogleMap mMap = null;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);
    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment)getSupportFragmentManager()
      {.findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
  }


  @Override
  public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    mMap.setOnMapLoadedCallback(this);
  }

  @Override
  public void onMapLoaded() {
    // 地図の描画完了時の処理を実装
    Toast.makeText(this, "地図の描画完", Toast.LENGTH_LONG).show();
  }
}

描画完了時の処理(非推奨)

Googleマップを表示する」を参照し, Googleマップが表示できるようにする.
  • MainActivity.java
    • GoogleMapのインスタンスを取得する.
    • GoogleMap#setOnMapLoadedCallbackメソッドで, 地図の描画完了に呼ばれるイベントハンドラを登録する.
    • onMapLoadedメソッドに, 描画完了時の処理を実装する.
package com.moonlight_aska.android.web.googlemap005;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnMapLoadedCallback;
import com.google.android.gms.maps.SupportMapFragment;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.widget.Toast;

public class MainActivity extends FragmentActivity implements OnMapLoadedCallback {
  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.setOnMapLoadedCallback(this);
    }
  }

  @Override
  public void onMapLoaded() {
    // TODO Auto-generated method stub
    // 地図の描画完了時の処理を実装
    Toast.makeText(this, "地図の描画完", Toast.LENGTH_LONG).show();
  }
}
  • 動作例
Nexus 7 / Android 4.4.2




コメントをかく


ユーザーIDでかく場合はこちら
「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu


逆引き(基礎編)

画面表示/操作(49)

フラグメント(1)

逆引き(応用編)

AD



管理人のみ編集できます