スタッフブログ

STAFF BLOG

アプリ開発日誌

2016.07.11

【ココドコ!?】アプリで地図情報を表示したい・・・【Android】

Overview

こんにちは、Androidアプリ開発担当のWATANABEです。

Androidアプリで位置情報を扱うにはどうしたらいいでしょう。 方法としてはあげられるのは

  • webViewで地図を表示させる
  • 端末にインストールされているGoogleMapに表示してほしい位置情報を渡して表示してもらう。
  • アプリにGoogleMapを組み込んで表示させる。

以上の方法があげられますが、アプリでピンを刺してタップするイベントを取得したり、 ピンのデザインを自分たちのアイコンにしたいなどカスタムする要望が多く、 比較的3番目のアプリにGoogleMapを組み込むという実装になります。

今回は自分のアプリにGoogleMapを表示させて任意の場所にピンをさす方法をまとめたいと思います。

この投稿で作成したサンプルアプリはGithubにあげていますのでソースを見たい人はどうぞ!

gradle を追加する

Google Map を使用するためにまず以下のファイルをプロジェクトに追加します。 2016/07/08付けでは9.0.2が最新のようです。

dependencies {
    compile 'com.google.android.gms:play-services:9.0.2'
}

アクセス権限を追加する

ActivityManifest.xmlに位置情報取得するためのパーミッションを追加します。 これを追加しないと自分の位置を取得できなかったり、アプリで位置情報を扱かったりすることができません。

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

Google Apis で API Key を取得する

GoogleMapのAPIを使用するためにgoogleアカウントを用いてAPIを使用するための手続きをします。

https://console.developers.google.com/apis/library

スクリーンショット 2016-07-08 19.33.25

プロジェクトがない場合は作成しましょう。

Google Maps API > Google Maps Android API を選択し、APIを有効にします。

認証情報 > 認証情報を作成 からAPIキーを作成し、 ActivityManifest.xmlにAPIキー情報を設定します。

ActivityManifest.xml

<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="@string/google_maps_key" />

レイアウトを作成する

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="jp.eda_inc.edamap.MapsActivity" />

activity_maps.xml

SupportMapFragmentを初期化する

Activityを作成しましょう。
MapsActivityはFragmentActivityを継承したクラスでアプリを起動した時に実行されます。
そしてSupportMapFragmentを初期化します。
MapsActivity.java

SupportMapFragment mapFragment =
 (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);

 マップにピンをさす

緯度経度を確かめます。
地図にピンをさすために位置情報を取得しましょう。

http://www.geocoding.jp/

スクリーンショット 2016-07-08 19.33.37

そして、マップ情報を同期させます。
今回は弊社の位置情報を調べてピンを立てたいと思います。

mapFragment.getMapAsync(new OnMapReadyCallback() {
    @Override
    public void onMapReady(GoogleMap googleMap) {
        GoogleMap mMap = googleMap;

        // Add a marker in eda and move the camera
        LatLng sydney = new LatLng(35.629471, 139.726511);
        mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in EDA"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
    }
});

 実行する

Screenshot_20160708-194301

きました!今回は弊社にピンを刺してみました。
実際のアプリではイベント会場の場所にピンを立てたり、ユーザーの位置情報を共有したり、日本地図に桜の開花情報を表示させたりと、地図情報と位置情報を用いてアプリを実装しています。

ユーザービリティの向上のためにアプリにマップを導入してはどうでしょうか?

BACK

お問合せ

イーディーエーに興味をお持ちいただいて
ありがとうございます!
スマホアプリに関するご相談、
お見積りや弊社へのご質問など、
お気軽にお問い合わせください。
担当者より折り返しご連絡させていただきます。

    お名前必須
    会社名
    メールアドレス必須
    電話番号必須
    お問合わせ種別必須
    お問合わせ内容必須

    アンケートにご協力ください。
    弊社サイトへはどのようにしてアクセスされましたか?

    個人情報のお取扱いに関する同意事項

    1.事業者の氏名又は名称

    株式会社イーディーエー

    2.個人情報保護管理者の氏名又は職名、所属及び連絡先

    個人情報保護管理者 小宮 保人
    Mail:[email protected]

    3.取得した個人情報の利用目的

    当フォームで取得した個人情報は、お問い合わせに関する回答のために利用し、目的外利用はいたしません。

    4.弊社が取得した個人情報の第三者への委託、提供について

    弊社は、ご本人に関する情報をご本人の同意なしに第三者に委託または提供することはありません。

    5.個人情報保護のための安全管理

    弊社は、ご本人の個人情報を保護するための規程類を定め、従業者全員に周知・徹底と啓発・教育を図るとともに、その遵守状況の監査を定期的に実施いたします。
    また、ご本人の個人情報を保護するために必要な安全管理措置の維持・向上に努めてまいります。

    6.個人情報の開示・訂正・利用停止等の手続

    ご本人が、弊社が保有するご自身の個人情報の、利用目的の通知、開示、内容の訂正、追加又は削除、利用の停止、消去及び第三者への提供の停止を求める場合には、下記に連絡を頂くことで、対応致します。

    株式会社イーディーエー 個人情報お問合せ窓口
    〒106-0032 東京都港区六本木7丁目14番23 ラウンドクロス六本木4F
    TEL:03-5422-7524 FAX:03-5422-7534
    Mail:[email protected]

    7.ご提供いただく情報の任意性

    個人情報のご提供は任意ですが、同意を頂けない場合には、第3項にあります利用目的が達成できない事をご了承いただくこととなります。

    8.弊社Webサイトの運営について

    弊社サイトでは、ご本人が弊社Webサイトを再度訪問されたときなどに、より便利に閲覧して頂けるよう「クッキー(Cookie)」という技術を使用することがあります。これは、ご本人のコンピュータが弊社Webサイトのどのページに訪れたかを記録しますが、ご本人が弊社Webサイトにおいてご自身の個人情報を入力されない限りご本人ご自身を特定、識別することはできません。
    クッキーの使用を希望されない場合は、ご本人のブラウザの設定を変更することにより、クッキーの使用を拒否することができます。その場合、一部または全部のサービスがご利用できなくなることがあります。