ホーム >  Android > MapView

Android -MapView-

MapViewの利用

MapViewを利用するには、Googleサイトで「Android Maps API Key」を取得する必要があります。
取得手順は、こちらです。

Googleのサービスと接続するcom.google.androidパッケージのAPIを利用するには、新規プロジェクトのTargetでは、Google APIsを 選択します。

AndroidManifest.xmlの追加記述も必要です。

  • 通信機能の許可
    <uses-permission android:name="android.permission.INTERNET"/>
  • ユーザライブラリの追加
    <uses-library android:name="com.google.android.maps"/>

Android Mapsを使用するためには、通常のActivityではなく、MapActivityクラスを継承する必要があります。

MapViewを生成するには、MapViewクラスを利用します。

マップの位置や拡大縮小サイズを指定するには、マップコントローラを使用します。

com.google.android.mapsパッケージのリファレンスは、SDKをインストールしたフォルダ直下の 「add-ons」→該当バージョンのフォルダ→「docs」→「reference」→「index.html」で閲覧することができます。

MapViewクラス

MapViewを生成するには、MapViewクラスを利用します。

コンストラクタ

  • MapView(android.content.Context context, java.lang.String apiKey)
  • MapView(android.content.Context context, android.util.AttributeSet attrs)
  • MapView(android.content.Context context, android.util.AttributeSet attrs, int defStyle)

主なメソッド

MapController getController() マップの位置や拡大縮小サイズを指定することができるMapControllerオブジェクトを取得します。
void setBuiltInZoomControls(boolean on) マップのズームを制御するズームコントローラの配置の設定

MapControllerクラス

主なメソッド

void setCenter(GeoPoint point) マップ位置の指定をします。
  • GeoPointクラスのコンストラクタ
      GeoPoint(int latitudeE6, int longitudeE6)
      (latitudeE6)、経度(longitudeE6)をdouble型ではなく 1E6(1×10の6乗)を乗算したint型の値を渡します。
int setZoom(int zoomLevel) マップの拡大縮小サイズの指定をします。

サンプル1 P0406MapViewEx

AndroidManifest.xmlの赤文字部分を追加記述します。

  • 通信機能の許可
    <uses-permission android:name="android.permission.INTERNET"/>
  • ユーザライブラリの追加
    <uses-library android:name="com.google.android.maps"/>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="info.mitosys.p0406mapviewex"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8"
          android:targetSdkVersion="8"/>
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".P0406MapViewEx"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <uses-library android:name="com.google.android.maps"/>
    </application>

</manifest>


P0406MapViewEx.java

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import android.os.Bundle;

public class P0406MapViewEx  extends MapActivity {
  private final  static String API_KEY =  "ここには、ご自分のAPI_KEYを記述します。";

  @Override
  public void  onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // MapViewの生成
    MapView mapView = new  MapView(this, API_KEY);

    // マップビューの操作の有効無効の設定
    mapView.setClickable(true);

    // 表示するビューの指定
    setContentView(mapView);

    // ズームコントローラの配置
    mapView.setBuiltInZoomControls(true);

    // マップコントローラの操作するためにMapControllerを取得
    MapController mc = mapView.getController();

    // マップ位置に指定
    mc.setCenter(new  GeoPoint((int) (33.886735 *  1E6),
        (int)  (130.882682 * 1E6)));

    // マップの拡大縮小サイズ指定
    mc.setZoom(16);

  }

  // ルート情報の表示の有無
  @Override
  protected  boolean isRouteDisplayed() {
    return false;
  }
}


サンプル2 P0406MapViewEx1(リソースをxml指定)

AndroidManifest.xmlの赤文字部分を追加記述します。

  • 通信機能の許可
    <uses-permission android:name="android.permission.INTERNET"/>
  • ユーザライブラリの追加
    <uses-library android:name="com.google.android.maps"/>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest  xmlns:android="http://schemas.android.com/apk/res/android"
    package=" info.mitosys.p0406mapviewex1"
     android:versionCode="1"
     android:versionName="1.0" >

    <uses-sdk  android:minSdkVersion="8"
           android:targetSdkVersion="8"/>

    <uses-permission  android:name=" android.permission.INTERNET"/>

    <application
         android:icon="@drawable/ic_launcher"
         android:label="@string/app_name" >
        <activity
             android:name=".P0406MapViewEx1"
             android:label="@string/app_name" >
            <intent-filter>
                < action  android:name="android.intent.action.MAIN" />

                < category  android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        < uses-library android:name=" com.google.android.maps"/>
    </application>

</manifest>


res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android"
    android:layout_width= "fill_parent"
     android:layout_height="fill_parent"
    android:orientation= "vertical" >

    <com.google.android.maps.MapView
        android:id= "@+id/mapview"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:clickable="true"
         android:apiKey="ここには、ご自分のAPI_KEYを記述します。" />
</LinearLayout>


P0406MapViewEx1.java

import android.os.Bundle;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;

public class P0406MapViewEx1 extends MapActivity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // MapViewの取得
    MapView mapView = (MapView) findViewById(R.id.mapview);

    // ズームコントローラの配置
    mapView.setBuiltInZoomControls(true);

    // マップコントローラの操作するためにMapControllerを取得
    MapController mc = mapView.getController();

    // マップ位置に指定
    mc.setCenter(new GeoPoint((int) (33.886735 * 1E6),
        (int) (130.882682 * 1E6)));

    // マップの拡大縮小サイズ指定

    mc.setZoom(16);

  }

  // ルート情報の表示の有無
  @Override
  protected boolean isRouteDisplayed() {
    return false;
  }

}