libro
www.tuyano.com
Google androidプログラミング入門

Google APIs Add-OnでGoogleマップを使う (7/7)

作成:2010-06-01 13:15
更新:2010-06-01 13:30

■マップの基本操作

では、マップの基本的な機能だけでも使えるようにしましょう。onCreateメソッドを、下のリストのように修正してください。

これでプログラムを実行すると、東京のマップが表示されるようになります。またマップをクリックすると、画面下にズームコントローラーが表示され、地図の拡大縮小ができるようになります。もちろん画面をドラッグすればちゃんと地図も動かすことができます。

ここでは、いくつかの処理を追加して、これらの機能を実現しています。ざっと整理しておきましょう。

1.マップコントローラーの取得
MapView map1 = (MapView)findViewById(R.id.map1);
MapController controller = map1.getController();
マップを操作するためには、「MapController」というオブジェクトを取得します。まず、findViewByIdMapViewインスタンスを取得し、そこから「getController」というメソッドを呼び出します。これで、現在使用しているMapViewを操作するためのMapControllerインスタンスが得られます。

2.中心位置の設定
GeoPoint latlng = new GeoPoint(35681126,139767251);
controller.setCenter(latlng);
マップの表示位置(地図の中心位置)は、「GeoPoint」というクラスを使って指定します。このGeoPointは、経度・緯度の値をそれぞれ引数に指定してnewすることで作成できます。

注意したいのは、「経度緯度の値は整数である」という点です。Googleマップのジオコーディングなどを使うと、例えば東京駅の位置は「35.681126,139.767251」といった実数で示されますが、GetPointではこれらの値から小数点を取り除いた整数値を指定する必要があります。

こうして作成したGeoPointを、「setCenter」というメソッドでコントローラーに設定すれば、マップの表示位置を変更できます。

3.拡大率の設定
controller.setZoom(12);
拡大率(ズーム)の設定は、コントローラーの「setZoom」メソッドで行います。これは引数に拡大率を示す整数値を渡して呼び出すだけです。適当に数値を設定して、どのぐらい拡大されるか確認するとよいでしょう。

4.ビルトイン・ズームコントローラーの表示
map1.setClickable(true);
map1.setBuiltInZoomControls(true);
MapViewには、ズームを操作するコントローラーがビルトインされています。これを表示させるには、まず「setClickable」でマップをクリッカブル(クリックして操作可能)にし、それから「setBuiltInZoomControls」メソッドでtrueに設定します。

たったこれだけで、ビルトインのズームコントローラーが表示されるようになります。同時に、マップもマウスでドラッグして動かしたりできるようになります。

――とりあえず、これで「マップの位置・ズームの設定」「マップを操作するための基本的な機能の実装」ができるようになりました。これだけできると、なんとなくマップらしい使い方ができるようになります。これでしばらく遊んでみましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        MapView map1 = (MapView)findViewById(R.id.map1);
        MapController controller = map1.getController(); 
        GeoPoint latlng = new GeoPoint(35681126,139767251);
        controller.setCenter(latlng);
        controller.setZoom(12);
        map1.setClickable(true);
        map1.setBuiltInZoomControls(true);
    }

※関連コンテンツ

「Google androidプログラミング入門」に戻る