MapActivityを使用して、Google Mapを表示するアプリケーションのベースを作成します。
以下、作成のポイントです。
パーミッションの設定や、ライブラリの設定を行うために、AndroidManifest.xmlを編集しましょう。
<uses-permission android:name="android.permission.INTERNET"/>
<uses-library android:name="com.google.android.maps"/>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jp.hews.hellomap"
android:versionCode="1"
android:versionName="1.0.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".HelloMapActivity"
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を追加 -->
<uses-library android:name="com.google.android.maps"/>
</application>
<!-- 以下のuses-permissionを追加 -->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
画面のレイアウトを決定するために、res/layout/main.xmlを編集しましょう。
このアプリケーションでは、上部に水平方向のリニアレイアウトを配置し、中に地図を表示するMapViewを配置します。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com.google.android.maps.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:enabled="true"
android:clickable="true"
android:apiKey=<取得したMaps API Key>
/>
</LinearLayout>
配置したMapViewの処理を呼び出すために、アクティビティのベースクラスをMapActivityに変更します。
public class HelloMapActivity extends MapActivity { @Override
protected boolean isRouteDisplayed() {
return false;
}
このままでは、地図が大きすぎるので、拡大して表示してみましょう。ここでは、簡略化のため、固定の倍率と場所を設定してみましょう。
MapView m = (MapView)findViewById(R.id.mapview);
MapController c = m.getController();
c.setZoom(15);
c.setCenter(new GeoPoint(35455281,139629711)); ZoomControls zc = (ZoomControls) m.getZoomControls();
zc.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
zc.setGravity(Gravity.BOTTOM + Gravity.CENTER_HORIZONTAL);
m.addView(zc);package jp.hews.hellomap;
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 HelloMapActivity extends MapActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MapView m = (MapView)findViewById(R.id.mapview);
MapController c = m.getController();
c.setZoom(15);
c.setCenter(new GeoPoint(35455281,139629711));
ZoomControls zc = (ZoomControls) m.getZoomControls();
zc.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
zc.setGravity(Gravity.BOTTOM + Gravity.CENTER_HORIZONTAL);
m.addView(zc);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}ワーキンググループ/勉強会?