Androidプログラマへの道 〜 Moonlight 明日香 〜 - 地図上に線を描画する

Google Maps Android API v2

Googleマップに線(Polyline)を描画するには, PolylineOptionsクラスを利用する.

線の描画

Googleマップを表示する」を参照し, Googleマップが表示できるようにする.

  • MainActivity.java
    • GoogleMapのインスタンスを取得する.
    • PolylineOptionsのインスタンスを生成する.
    • PolylineOptions#addメソッドで, 描画する緯度・経度を追加する.
    • PolylineOptions#fillColorメソッドで, 線の色, 幅を設定する.
    • GoogleMap#addPolyglineメソッドで, 線を登録する.
package com.moonlight_aska.android.web.googlemap003;

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.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.PolylineOptions;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity {
  private static final LatLng ITAMI = new LatLng(34.785500, 135.438004);
  private static final LatLng KOBE = new LatLng(34.635021, 135.225104);
  private static final LatLng KANSAI = new LatLng(34.427299, 135.244003);
  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(KOBE).zoom(10.0f)
        .bearing(0).build();
      mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPos));
      // 描画内容の設定
      PolylineOptions options = new PolylineOptions();
      // 緯度・経度
      options.add(ITAMI, KANSAI, KOBE);
      // 線色
      options.color(Color.BLUE);
      // 線幅
      options.width(5);
      mMap.addPolyline(options);
    }
  }
}
  • 動作例
Nexus 7 / Android 4.4