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

Google Maps Android API v2

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

線の描画

  • MainActivity.java
    • GoogleMapのインスタンスを取得する.
    • PolylineOptionsのインスタンスを生成する.
    • PolylineOptions#addメソッドで, 2地点の緯度, 経度を設定する.
    • PolylineOptions#geodesicメソッドで, 測地線か直線かを設定する.
    • GoogleMap#addPolylineメソッドで, 2地点間の線を描画する.
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.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 {
  // 関西国際空港 : 34.435912,135.24349641
  private LatLng mKansai = new LatLng(34.435912, 135.243496);
  // ホノルル国際空港 : 21.318701 ,-157.921997
  private LatLng mHnl = new LatLng(21.318701, -157.921997);
  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( (mKansai.latitude+mHnl.latitude)/2, 170);
      CameraPosition cameraPos = new CameraPosition.Builder()
        .target(location).zoom(1).build();
      mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPos));
      // 測地線
      PolylineOptions geodesics = new PolylineOptions()
        .add(mKansai, mHnl)  // 2地点設定
        .geodesic(true)    // 測地線
        .color(Color.RED)
        .width(3);
      mMap.addPolyline(geodesics);
      // 直線
      PolylineOptions straight = new PolylineOptions()
        .add(mKansai, mHnl)
        .geodesic(false)   // 直線
        .color(Color.YELLOW)
        .width(3);
      mMap.addPolyline(straight);
    }
  }
}
  • 動作例
Nexus 7 / Android 4.3




コメントをかく


「http://」を含む投稿は禁止されています。

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

Menu


逆引き(基礎編)

画面表示/操作(49)

フラグメント(1)

逆引き(応用編)

Firebase(2)

AD



管理人/副管理人のみ編集できます