Androidプログラマへの道 〜 Moonlight 明日香 〜 - マーカーをカスタマイズする

Google Maps Android API v2

マーカーをカスタマイズするには, MarkerOptionクラスを利用する.

アイコンのカスタマイズ

MarkerOptionで設定可能な主な項目は以下の通り.
position座標値(必須)
anchorマーカーの画像のどこを基準とするか設定 (default 下側中央)
draggabletrueでマーカーをドラッグ可能に (default false)
iconマーカーの画像
rotationマーカーの回転角度(時計周り) (default 0)
snippetタイトルの下に表示される文字列
titleマーカーをタップしたときに表示されるタイトル文字列
visibletrueでマーカーを表示 (default true)
  • MainActivity.java
    • MarkerOptionsのインスタンスを生成する.
    • BitmapDescriptorFactory#defaultMakerメソッドで, マーカーの色を変更する.
HUE_AZUREHUE_BLUEHUE_CYANHUE_GREENHUE_MAZENTA
HUE_ORANGEHUE_REDHUE_ROSEHUE_VIOLETHUE_YELLOW
    • BitmapDescriptorFacotry#fromResourceメソッドで, リソースからアイコン画像を取得する.
    • MarkerOptions#iconメソッドで, アイコンを設定する.
    • GoogleMap#addMarkerメソッドで, マーカーを登録する.
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.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptor;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

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) {
      CameraPosition cameraPos = new CameraPosition.Builder()
        .target(new LatLng(mLatitude, mLongitude)).zoom(10.0f)
        .bearing(0).build();
      mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPos));
      // マーカー設定
      LatLng location = new LatLng(mLatitude, mLongitude);
      MarkerOptions options = new MarkerOptions();
      options.position(location);
      // アイコンの変更
      // (1) 色選択
      BitmapDescriptor icon = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN);
      // (2) リソースのアイコン画像
      // BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher);
      options.icon(icon);
      mMap.addMarker(options);
    }
  }
}
  • 動作例
SHARP SH-03C / Android 2.2
(1) 色選択


(2) アイコン画像