Mono Works

チラシのすきま

メモ:Google Mapsでうちの会社の場所を表示

以前、インテントの基本についてメモした時に、URL情報をブラウザアプリに渡すお話しをしました。

メモ:インテントのキホン - Mono Works

今回は、位置情報を地図アプリに渡して、表示する方法についてメモ。

androiddevmemo20150903_00

そして、Xperia Z3 Compact SO-02Gで会社の入ったビルをGoogleマップで表示させてみました。

おさらい

URL情報をブラウザに渡す基本形式

Uri uri = Uri.parse("http://www.monoworks.co.jp");  /* ここにURL情報を記述 */
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

地図アプリに位置情報を渡す基本形式

基本的にURLをブラウザに渡すのと同じで、URLを記述していた場所に位置情報を記述します。

Uri uri = Uri.parse("geo:35.684331,139.735232");  /* ここに位置情報を記述 */
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

位置情報の書き方

位置情報の書き方の基本は、緯度・経度を10進法で指定。

geo:35.684331,139.735232

geo:緯度,経度

指定した緯度経度を地図の中心にして表示してくれます。

さらに地図の表示倍率を指定する場合、緯度経度に続けてzoomを指定します。

geo:35.684331,139.735232?z=18

geo:緯度,経度?z=倍率

倍率は、指定場所の地図データがあれば、0(世界俯瞰)から21(個々の建物判別)までの数字が指定できます。

開くアプリを決め打ち

これまでのメモを基に地図を開くコードを書くと、こんな感じになります。これだと地図情報を取り込むことができるアプリが複数ある場合、どのアプリで開くか選択することになります。

Uri gmUri = Uri.parse("geo:35.684331,139.735232?z=19");
Intent gmIntent = new Intent(Intent.ACTION_VIEW, gmUri);
startActivity(gmIntent);

今回は、Googleマップを指定して開くように1行追加してみます。それがこちら。

Uri gmUri = Uri.parse("geo:35.684331,139.735232?z=19");
Intent gmIntent = new Intent(Intent.ACTION_VIEW, gmUri);
gmIntent.setPackage("com.google.android.apps.maps");
startActivity(gmIntent);

setPackageでGoogleマップのパッケージ名を指定しています。

※ちなみに、これまでの例では単に「intent」「uri」と表記していたものを自分なりに分かりやすいように「gmIntent」「gmUri」としています。

実際にアプリを作ってみた

Android Studioで「OpenGoogleMaps」というアプリを新規作成して、下記3ファイルにこれまでに調べた内容を記述して、動作を確かめてみました。

MainActivity.java(緯度経度は、うちの会社を指定)

package jp.co.monoworks.opengooglemaps;

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);</br>  Button btnGoogleMaps = (Button) this.findViewById(R.id.button1);
        btnGoogleMaps.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                Uri gmUri = Uri.parse("geo:35.684331,139.735232?z=19");
                Intent gmIntent = new Intent(Intent.ACTION_VIEW, gmUri);
                gmIntent.setPackage("com.google.android.apps.maps");</br>          startActivity(gmIntent);
            }
        });
    }

}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  android:paddingBottom="@dimen/activity_vertical_margin"
  tools:context=".MainActivity">

  <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_open_maps"
    android:id="@+id/button1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="20dp"
    />

</RelativeLayout>

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">OpenGoogleMaps</string>
    <string name="button_open_maps">地図を開く</string>
</resources>

アプリの動作確認

アプリを起動して、「地図を開く」ボタンを押すと

androiddevmemo20150903_01

会社の場所がGoogleマップで表示されました。わーい。

androiddevmemo20150903_02

おひれ

開発者サイトには、他にもストリートビューで開く方法など、いろいろなマップ表示の記述について書かれています。

Launch Google Maps  |  Maps SDK for Android  |  Google Developers

試してみて発見があれば、またメモを残したいと思います。

【参考サイト】

Google Maps Intents  |  Google Maps Android API  |  Google Developers

メモ:インテントのキホン(Android) | Mono Works

コメント

コメントなどありましたら、GitHubのディスカッションへお願いします。(書き込みには、GitHubのアカウントが必要です)
執筆者
"ぽぽろんち" @pporoch
pporoch120
Mono Worksの中の人。好きなことをつらつらと書き留めてます。
ギターを始めてから 練習動画をYouTubeにアップしてます。ご笑納ください。
"DQX@ぬここ(UD487-754)、コツメ(NO078-818)"
採用案内