2012/3/29



      Googleマップ と GPS機能                   を試してみた。




                           2012年 3月31日

                          つるつる(都留   栄一)

日本Androidの会 大分支部 第13回Android勉強会                     Page1
2012/3/29

        はじめに。
 • 昨年の東日本大震災に伴う原発事故を契機に、
   原発からの距離を測定するアプリを作ってみた
   い。。。それにはGoogleマップやGPS機能の事を
   調べないけんね。と思い調べて作ってみました。

 • 今回のセッションの目標は、
   調べた内容を整理して、次に同じ機能を実装する
   際の自分の為や、大分支部の方でGoogleマップや
   GPS機能を使ってみたいけど・・・と思ってる方へ、
   チャレンジする切っ掛け作りになれば幸いです。
日本Androidの会 大分支部 第13回Android勉強会        Page2
2012/3/29

        こんな感じのアプリを公開中です。
アプリ名:「原発からの距離は?」
GPS機能とGoogleマップを組み合わせて、原発からの距離を測定するアプリです。




  先日、ketchappってサイトで、アプリを紹介して頂いた。様です。。。(知らない間に。。。)
  http://ketchapp.jp/app/16854.html

日本Androidの会 大分支部 第13回Android勉強会                    Page3
2012/3/29

        今日のセッションでは
    • Googleマップを使った簡単なサンプル作りを通
      して、作成の過程や、ハマッタ点を説明します。

       GPS機能のサンプルまで入れると長くなるので、
       次回の勉強会で説明する事にします。
       御了承ください。。。




日本Androidの会 大分支部 第13回Android勉強会        Page4
2012/3/29

        Googleマップって。
  -Googleマップは、検索エンジンのGoogleがインターネット
    を通して提供しているローカル(地域)検索サービス。

  -2012年初頭より1日のAPI使用回数が25,000回以上
   (Styled Mapsの場合は1日2,500回以上)に及ぶ場合
   有料化されることになった。住所→緯度・経度への変換
   を行う「Geocoder」については、元々1日あたりの利用回
   数制限(1日2,500回以内)が設けられている。

  だそうです。。。出典:ウィキペディア(Googleマップ)より

日本Androidの会 大分支部 第13回Android勉強会        Page5
2012/3/29

        Googleマップ表示アプリを作る。
  • 開発環境以外に、事前に必要な物
    -API Key(GoogleマップAPIを使うために必要) 以下のURLから取得します。
    http://code.google.com/intl/ja/android/maps-api-signup.html
    ※その際、開発環境の証明書(debug.keysoreファイル)のフィン
    ガープリント(MD5)が必要になります。自分の開発環境
    のMD5を調べてください。 詳細は次のページから。。。
     ■開発環境の証明書ファイルのパス。
     Windows XP = C:¥Documents and Settings¥%USERNAME%¥.android¥debug.keystore
     Windows Vista = C:¥Users¥%USERNAME%¥.android¥debug.keystore
     Mac/Linux = ~/.android/debug.keystore


  ※開発環境(エミュレータ上)と公開用のAPKファイルでは、フィンガープリントが異なるので、公開時はもう一つ
    APIKeyが必要です。(つるは公開後、地図が表示されず焦りました。Orz。。。。)



日本Androidの会 大分支部 第13回Android勉強会                                                       Page6
2012/3/29

        開発環境の証明書を調べる。
   Dosプロンプトで、コマンド打つと・・・
   >Keytool.exe –list –keystore ./debug.keystore

                                  パスワードはEnter押下で無視します。




  フィンガープリントが表示されます。
  (後で使うので結果をコピペして取っておきます。)


日本Androidの会 大分支部 第13回Android勉強会                          Page7
2012/3/29

        では、APIKeyを取得しましょう。
      http://code.google.com/intl/ja/android/maps-api-signup.html へアクセス。




                                       先ほどの結果を、「コピペ」して画面下の
                                     「Generate API Key」ボタンを押下すると・・・。




日本Androidの会 大分支部 第13回Android勉強会                                            Page8
2012/3/29

        APIKeyが取得できた!
   一部、文字化けしてますが、気にしない気にしない・・・。



                                  APIKeyの文字列が表示されてます。




       Android開発環境の画面構成XMLファイル内で使う雛形まで用意してくれます。
       後で使うので、コピペして取っておいてください。


日本Androidの会 大分支部 第13回Android勉強会                              Page9
2012/3/29

        じゃあ、サンプルを作ってみよう。
      通常のプログラム作成と同じ様に、Eclipseにて新規にプ
       ロジェクトを作ります。

  •   Project name : HelloGoogleMaps
  •   Build Target : Google APIs (1.6)
  •   Application name : HelloGoogleMaps
  •   Package name : osc11ot.android.hellogooglemaps
  •   Create Activity : HelloGoogleMapsActivity
                                    「Build Target」に
                                      Google APIsを
                                      選択します。



日本Androidの会 大分支部 第13回Android勉強会                            Page10
2012/3/29

        MapActivityを継承する。
            自動生成された雛形「Activity 」継承から、
               『MapActivity』継承に変更する。
         継承変更後、エディタに怒れますが、「Ctrl+Shift+o」する。




      まだ怒られてるが、修正案の中から、メソッドの追加を選ぶ。




日本Androidの会 大分支部 第13回Android勉強会              Page11
2012/3/29

        メソッドが追加され、雛形が出来た。




日本Androidの会 大分支部 第13回Android勉強会       Page12
2012/3/29

        レイアウトにMapViewを追加する。
      画面構成のレイアウトファイルに、MapViewを追加します。
      APIKey取得時にコピーしていた、アレをそのままコピペです。
      android:id=“@+id/map”のみ追加。




                           android:apiKey=“赤線部分”に今回取得したAPIKeyが
                           書かれています。(エミュレータ環境用)
                           最終的にマーケット等で公開する場合は、
                           公開用の証明書でAPIKeyを取得した物と置き換えて下さい。



日本Androidの会 大分支部 第13回Android勉強会                                  Page13
2012/3/29

        マニフェストファイルに追加する。
       android:apiKey=“hoge・・・・fuga”に今回取得したAPIKeyが
      「GoogleMapsライブラリの使用宣言」と「インターネット接続パーミッション追加」を行います。
       書かれています。(エミュレータ環境用)
       最終的にマーケット等で公開する場合は、




日本Androidの会 大分支部 第13回Android勉強会                         Page14
2012/3/29

        Javaでコードを書いてませんが、
         とりあえず、地図が表示されるアプリが出来ました。。。




             地図が表示されてるダケでつまらないです。
             雛形を改造してメソッド等を叩いてみましょう。
日本Androidの会 大分支部 第13回Android勉強会           Page15
2012/3/29

        地図のドラッグ・ピンチ操作を有効に。
   MapViewを叩いてみる。




      mapview.setClickable(true) //ドラッグやピンチ操作有効
      mapview.setBuiltInZoomControls(true) //ズーム関連ボタン表示


日本Androidの会 大分支部 第13回Android勉強会                           Page16
2012/3/29

        縮尺変更と、初期表示位置を指定
         MapControllerを経由して、MapViewを操作する。
         mapctrl.setZoom(縮尺度)      //地図の縮尺変更
         mapctrl.setCenter(緯度,経度) //地図の初期表示場所指定




      よくある、緯度経度の値を1,000,000倍(1E6)した値で扱う様です。
      小数点を扱いたくないから???


日本Androidの会 大分支部 第13回Android勉強会                       Page17
2012/3/29

        見慣れた大分市が出てきました。
      ドラッグ操作や地図の拡大・縮小が出来るようになりました。




                        だだし、エミュレータだと地図の拡大・縮小に
                        「ピンチ操作」は出来ないみたいです。。。。
                        本田さんにmapvew.displayZoomControls(true);
                        を教わりましたが、変化せず。。。都留が何か間違った?
                        かな???


日本Androidの会 大分支部 第13回Android勉強会                                  Page18
2012/3/29

        地図上に画像を重ねてみよう。
   地図上に画像を配置する場合、
   ベースの地図に直接書き込む訳でなく、画像をレイヤー
    を元地図の上に重ねる事で実現する様です。


   以下のurlで詳しくやり方が示されてますので、作る場合
    の参考にしてください。
   http://www.adamrocker.com/blog/231/android1r1_overlay_on_map.html



   では、実際に画像を地図上に重ねてみましょう。。。


日本Androidの会 大分支部 第13回Android勉強会                                            Page19
2012/3/29

        画像を準備して保存します。
                             プロジェクトフォルダ内のresフォルダ内に
                             適当なフォルダ(drawable)を作り、
                             そこに“pin.png”ファイルを保存しました。




                                  pin.png



日本Androidの会 大分支部 第13回Android勉強会                        Page20
2012/3/29

        地図に重ねがきするクラスを用意。
  Com.google.android.maps.Overlayクラスを継承した、MyOverlayクラスを用意




日本Androidの会 大分支部 第13回Android勉強会                          Page21
2012/3/29

        地図にPin画像を重ねがき。




      Pin画像オブジェクトを、先ほど作ったMyOverlayクラスへ、緯度経度
         情報と一緒に渡し、マップビューのレイヤーに追加(add)


日本Androidの会 大分支部 第13回Android勉強会                   Page22
2012/3/29

        コンパルホールを挿すピンが出た!


                                  いくつもピンが挿したかったら、
                                  レイヤーにピン画像と緯度経度を渡して、
                                  追加(add)して重ねていけば、
                                  じゃんじゃん表示できます。




日本Androidの会 大分支部 第13回Android勉強会                         Page23
2012/3/29

        とりあえず、こんな流れです。
  • 地図を利用したアプリ作成時、おおまかな流れ
    を思い出して頂ければ幸いです。


  • GPS機能については、次回の勉強会でスライド
    準備します(たぶん) 。位置情報をGPSで取得
    し、Googleマップが組み合わされば、発想次第
    で色々と出来るかな??



日本Androidの会 大分支部 第13回Android勉強会       Page24
2012/3/29

        おしまい




               ご静聴、ありがとうございました。




日本Androidの会 大分支部 第13回Android勉強会       Page25

Google mapとgps機能を使ってみた。

  • 1.
    2012/3/29 Googleマップ と GPS機能 を試してみた。 2012年 3月31日 つるつる(都留 栄一) 日本Androidの会 大分支部 第13回Android勉強会 Page1
  • 2.
    2012/3/29 はじめに。 • 昨年の東日本大震災に伴う原発事故を契機に、 原発からの距離を測定するアプリを作ってみた い。。。それにはGoogleマップやGPS機能の事を 調べないけんね。と思い調べて作ってみました。 • 今回のセッションの目標は、 調べた内容を整理して、次に同じ機能を実装する 際の自分の為や、大分支部の方でGoogleマップや GPS機能を使ってみたいけど・・・と思ってる方へ、 チャレンジする切っ掛け作りになれば幸いです。 日本Androidの会 大分支部 第13回Android勉強会 Page2
  • 3.
    2012/3/29 こんな感じのアプリを公開中です。 アプリ名:「原発からの距離は?」 GPS機能とGoogleマップを組み合わせて、原発からの距離を測定するアプリです。 先日、ketchappってサイトで、アプリを紹介して頂いた。様です。。。(知らない間に。。。) http://ketchapp.jp/app/16854.html 日本Androidの会 大分支部 第13回Android勉強会 Page3
  • 4.
    2012/3/29 今日のセッションでは • Googleマップを使った簡単なサンプル作りを通 して、作成の過程や、ハマッタ点を説明します。 GPS機能のサンプルまで入れると長くなるので、 次回の勉強会で説明する事にします。 御了承ください。。。 日本Androidの会 大分支部 第13回Android勉強会 Page4
  • 5.
    2012/3/29 Googleマップって。 -Googleマップは、検索エンジンのGoogleがインターネット を通して提供しているローカル(地域)検索サービス。 -2012年初頭より1日のAPI使用回数が25,000回以上 (Styled Mapsの場合は1日2,500回以上)に及ぶ場合 有料化されることになった。住所→緯度・経度への変換 を行う「Geocoder」については、元々1日あたりの利用回 数制限(1日2,500回以内)が設けられている。 だそうです。。。出典:ウィキペディア(Googleマップ)より 日本Androidの会 大分支部 第13回Android勉強会 Page5
  • 6.
    2012/3/29 Googleマップ表示アプリを作る。 • 開発環境以外に、事前に必要な物 -API Key(GoogleマップAPIを使うために必要) 以下のURLから取得します。 http://code.google.com/intl/ja/android/maps-api-signup.html ※その際、開発環境の証明書(debug.keysoreファイル)のフィン ガープリント(MD5)が必要になります。自分の開発環境 のMD5を調べてください。 詳細は次のページから。。。 ■開発環境の証明書ファイルのパス。 Windows XP = C:¥Documents and Settings¥%USERNAME%¥.android¥debug.keystore Windows Vista = C:¥Users¥%USERNAME%¥.android¥debug.keystore Mac/Linux = ~/.android/debug.keystore ※開発環境(エミュレータ上)と公開用のAPKファイルでは、フィンガープリントが異なるので、公開時はもう一つ APIKeyが必要です。(つるは公開後、地図が表示されず焦りました。Orz。。。。) 日本Androidの会 大分支部 第13回Android勉強会 Page6
  • 7.
    2012/3/29 開発環境の証明書を調べる。 Dosプロンプトで、コマンド打つと・・・ >Keytool.exe –list –keystore ./debug.keystore パスワードはEnter押下で無視します。 フィンガープリントが表示されます。 (後で使うので結果をコピペして取っておきます。) 日本Androidの会 大分支部 第13回Android勉強会 Page7
  • 8.
    2012/3/29 では、APIKeyを取得しましょう。 http://code.google.com/intl/ja/android/maps-api-signup.html へアクセス。 先ほどの結果を、「コピペ」して画面下の 「Generate API Key」ボタンを押下すると・・・。 日本Androidの会 大分支部 第13回Android勉強会 Page8
  • 9.
    2012/3/29 APIKeyが取得できた! 一部、文字化けしてますが、気にしない気にしない・・・。 APIKeyの文字列が表示されてます。 Android開発環境の画面構成XMLファイル内で使う雛形まで用意してくれます。 後で使うので、コピペして取っておいてください。 日本Androidの会 大分支部 第13回Android勉強会 Page9
  • 10.
    2012/3/29 じゃあ、サンプルを作ってみよう。 通常のプログラム作成と同じ様に、Eclipseにて新規にプ ロジェクトを作ります。 • Project name : HelloGoogleMaps • Build Target : Google APIs (1.6) • Application name : HelloGoogleMaps • Package name : osc11ot.android.hellogooglemaps • Create Activity : HelloGoogleMapsActivity 「Build Target」に Google APIsを 選択します。 日本Androidの会 大分支部 第13回Android勉強会 Page10
  • 11.
    2012/3/29 MapActivityを継承する。 自動生成された雛形「Activity 」継承から、 『MapActivity』継承に変更する。 継承変更後、エディタに怒れますが、「Ctrl+Shift+o」する。 まだ怒られてるが、修正案の中から、メソッドの追加を選ぶ。 日本Androidの会 大分支部 第13回Android勉強会 Page11
  • 12.
    2012/3/29 メソッドが追加され、雛形が出来た。 日本Androidの会 大分支部 第13回Android勉強会 Page12
  • 13.
    2012/3/29 レイアウトにMapViewを追加する。 画面構成のレイアウトファイルに、MapViewを追加します。 APIKey取得時にコピーしていた、アレをそのままコピペです。 android:id=“@+id/map”のみ追加。 android:apiKey=“赤線部分”に今回取得したAPIKeyが 書かれています。(エミュレータ環境用) 最終的にマーケット等で公開する場合は、 公開用の証明書でAPIKeyを取得した物と置き換えて下さい。 日本Androidの会 大分支部 第13回Android勉強会 Page13
  • 14.
    2012/3/29 マニフェストファイルに追加する。 android:apiKey=“hoge・・・・fuga”に今回取得したAPIKeyが 「GoogleMapsライブラリの使用宣言」と「インターネット接続パーミッション追加」を行います。 書かれています。(エミュレータ環境用) 最終的にマーケット等で公開する場合は、 日本Androidの会 大分支部 第13回Android勉強会 Page14
  • 15.
    2012/3/29 Javaでコードを書いてませんが、 とりあえず、地図が表示されるアプリが出来ました。。。 地図が表示されてるダケでつまらないです。 雛形を改造してメソッド等を叩いてみましょう。 日本Androidの会 大分支部 第13回Android勉強会 Page15
  • 16.
    2012/3/29 地図のドラッグ・ピンチ操作を有効に。 MapViewを叩いてみる。 mapview.setClickable(true) //ドラッグやピンチ操作有効 mapview.setBuiltInZoomControls(true) //ズーム関連ボタン表示 日本Androidの会 大分支部 第13回Android勉強会 Page16
  • 17.
    2012/3/29 縮尺変更と、初期表示位置を指定 MapControllerを経由して、MapViewを操作する。 mapctrl.setZoom(縮尺度) //地図の縮尺変更 mapctrl.setCenter(緯度,経度) //地図の初期表示場所指定 よくある、緯度経度の値を1,000,000倍(1E6)した値で扱う様です。 小数点を扱いたくないから??? 日本Androidの会 大分支部 第13回Android勉強会 Page17
  • 18.
    2012/3/29 見慣れた大分市が出てきました。 ドラッグ操作や地図の拡大・縮小が出来るようになりました。 だだし、エミュレータだと地図の拡大・縮小に 「ピンチ操作」は出来ないみたいです。。。。 本田さんにmapvew.displayZoomControls(true); を教わりましたが、変化せず。。。都留が何か間違った? かな??? 日本Androidの会 大分支部 第13回Android勉強会 Page18
  • 19.
    2012/3/29 地図上に画像を重ねてみよう。 地図上に画像を配置する場合、 ベースの地図に直接書き込む訳でなく、画像をレイヤー を元地図の上に重ねる事で実現する様です。 以下のurlで詳しくやり方が示されてますので、作る場合 の参考にしてください。 http://www.adamrocker.com/blog/231/android1r1_overlay_on_map.html では、実際に画像を地図上に重ねてみましょう。。。 日本Androidの会 大分支部 第13回Android勉強会 Page19
  • 20.
    2012/3/29 画像を準備して保存します。 プロジェクトフォルダ内のresフォルダ内に 適当なフォルダ(drawable)を作り、 そこに“pin.png”ファイルを保存しました。 pin.png 日本Androidの会 大分支部 第13回Android勉強会 Page20
  • 21.
    2012/3/29 地図に重ねがきするクラスを用意。 Com.google.android.maps.Overlayクラスを継承した、MyOverlayクラスを用意 日本Androidの会 大分支部 第13回Android勉強会 Page21
  • 22.
    2012/3/29 地図にPin画像を重ねがき。 Pin画像オブジェクトを、先ほど作ったMyOverlayクラスへ、緯度経度 情報と一緒に渡し、マップビューのレイヤーに追加(add) 日本Androidの会 大分支部 第13回Android勉強会 Page22
  • 23.
    2012/3/29 コンパルホールを挿すピンが出た! いくつもピンが挿したかったら、 レイヤーにピン画像と緯度経度を渡して、 追加(add)して重ねていけば、 じゃんじゃん表示できます。 日本Androidの会 大分支部 第13回Android勉強会 Page23
  • 24.
    2012/3/29 とりあえず、こんな流れです。 • 地図を利用したアプリ作成時、おおまかな流れ を思い出して頂ければ幸いです。 • GPS機能については、次回の勉強会でスライド 準備します(たぶん) 。位置情報をGPSで取得 し、Googleマップが組み合わされば、発想次第 で色々と出来るかな?? 日本Androidの会 大分支部 第13回Android勉強会 Page24
  • 25.
    2012/3/29 おしまい ご静聴、ありがとうございました。 日本Androidの会 大分支部 第13回Android勉強会 Page25