Google Maps for Mobile (Googleマップモバイル)とKMLによるGPS連動 | FOMA 903i以降

2007/08/27追記:コメントでアドヴァイスを頂きました。FOMA付属のブラウザで本文をコピーできない件に関して、formのinput type=textの中に表示させることによりコピー機能が使えるようにしました。
追記終わり。

GoogleはFOMA 903i, 904i以降および、PDAなど携帯端末で利用できるGoogle Maps for Mobile(Googleモバイルマップ, Googleマップ モバイル)を発表した。Google Mapsは、パソコンのウェブブラウザで利用できる地図と連動したサービスで、位置情報マッシュアップの代名詞といえるサービスである。そのGoogle Mapsを携帯端末で利用できるサービスが昨年米国で開始していた。今回、やっと日本の携帯(NTT Docomo FOMA 903i以降限定)のサービスが開始された。早速遊んでみることにした。

Google Mapsは、Gmailと並んで、AJAX技術を使った軽量で快適なシステムである。さらに、Google Maps APIを利用することで、地図上に様々な情報を重ねる(マッシュアップ)することができる。今までこのAPIを使って数多くのウェブアプリを開発してきたため、Google Maps for Mobileの発表とそのAPIを楽しみにしていた。しかし問題が発生した。Google Maps for Mobileは、携帯端末のブラウザを利用せず、i-Appli(iアプリ)によるJavaのソフトウェアである。AJAXは、JavascriptのXMLHTTPRequestを非同期で通信することにより軽快な動作を実現している。携帯にもウェブブラウザが搭載されつつあるが未だJavascriptを十分にサポートされておらず、今回のGoogle Maps for Mobileはウェブベースではなくi-appliベースになったものと思われる。つまりi-appliベースであるため、今までのGoogle Maps APIが利用できない。これによりGoogle Maps for Mobileはとりあえず地図を見るだけか(ソフトウェア内で文字列検索はできる)と諦めようとしていたところ素敵な情報を見つけた。

Google Maps for Mobile now supports KML

この記事によると、なんとGoogle Earthで採用されているKMLをサポートしているというのだ。Google Maps for Mobileを起動すると画面左下にメニューがある。その中に、”お店やサービスの検索”という項目があって、そこでキーワードを入力してそのキーワードに関する位置検索ができる。そのキーワード入力欄に、KMLのファイルのURIを入力すればKMLを処理してくれるというである。つまり、このKMLを動的に生成すれば、Google Maps for Mobileに情報をマッシュアップすることができる。

今回のエントリーでは、GPS受信機能を使って位置情報を取得し、その情報からKMLを動的に生成し、そのKMLをGoogle Maps for Mobileに渡すことで、Google Maps for MobileとGPSの連動をテストしてみたので簡単に紹介する。

ここで、FOMAのGPS機能について少し触れる。以前、このブログで紹介したように、最新の携帯電話には位置を検出できるGPS受信機・機能が搭載されている。この機能に関しては、過去のブログを参照されたい。

携帯GPS実験(FOMA 903i, KDDI au)

上記のエントリーで紹介しているように、携帯電話(FOMA)のGPS機能は、i-appli DX(トラステッドアプリ)か、URIに位置情報を付加する方法(ここではちょっとニュアンスが違うがHTTPリクエスト法と呼ぶ)により利用することができる。今回も後者のURIのHTTPリクエスト法を利用する。

KMLを介したGoogle Maps for Mobile とFOMA GPS連動の流れ

1.GPS位置検出を行うためのHTTPリクエストを行うページにアクセス
2.位置情報が付加されたURIをHTTP GETメソッドで取得するサーバーサイド動的ページにアクセス(今回はJava Servletを利用したが、PHP, CGIなどでももちろん可能)
3.取得した経度・緯度・高度をGETパラメータとしたKMLを動的に生成する。(実際にKMLのテキストファイルを生成しておらず、パラメータに対して変化する動的なウェブページである(コンテンツタイプはtext/kml)。
4.KMLファイルのURIを携帯電話のコピー(クリップボード)機能でコピーする。ウェブブラウザを終了し、i-appliのGoogle Maps for Mobileを起動する。
5.Goole Maps for Mobile内の”メニュー”>”お店やサービスの検索”のキーワードにコピーしたKMLのURIをペースト(貼り付け)する。
6.現在位置の地図が表示される。

という流れである。簡単なサーバーサイドアプリで実現可能である。とにかくダサイのは、KMLのURIを連動とかいいながら、コピー&貼り付けで渡している点である。しかし現状の仕様ではこれしか方法はない。ここでもう一つ問題が発生した。携帯のブラウザ上でKMLのURIを表示しているが、私のSH903i, N904iではブラウザ上の文章をコピーできなかった。長いURIの文字列を紙に写すのはさすがにフィジカルコピー過ぎるので、そのURIをメールに送信する機能も追加した。アクセス後、自分にメールが届くので、その本文に掲載されているKMLのURIをコピーし、Google Maps for Mobile上で貼り付けるという過程になった。結果としてはコピー&貼り付けが面倒であるが、極めて良好に動作した。先のブログでも、GPS情報を使ってGoogle Mapsの非公開APIを使って画像の切り出しを使っていたが、あれは所詮画像の切り出しであり、その地図の移動・ズームを行うことができなかった。今回のシステムを用いることで、携帯で自分の位置を検出し、サクサクと地図を移動・ズームすることができた。

さて作成したページを公開する。雑に作ったシステムなので不具合などはご容赦願いたい。

Google Maps for Mobile + GPSテスト
Ver : 2007.08.21
for NTT DOCOMO FOMA 903i, 904i
https://www.spacewalker.jp/iss/gmapgps.html
* 注意1:FOMA 903i以降の機種でアクセスしてください。
* 注意2:標準のブラウザを用いてください。フルブラウザでは、HTTPリクエストによるGPSが動きません。

今回のエントリーでは、GPS機能により位置情報を取得とその情報をGoogle Maps for Mobile上にマッシュアップさせる方法について紹介している。もちろん、Google Maps for Mobileがヴァージョンアップして、GPS受信をアプリケーション上から呼び出せば今回のような面倒な方法をする必要がない。当然考えているとは思うので、その内実装されるのではないかと思われる。一方でGPSの情報以外でのマッシュアップの方法として、とりあえず公式なAPIが公開されていない以上、今回紹介したようなKMLを介した方法を利用するしかない。コピー&貼り付けによるKMLの取り込みはあまりスマートではないので何か使いやすいように改善してもらいたいものである。最後に、同じHTTPリクエスト法によるGPSが使える、Softbank, KDDI AUでもGoogle Maps for Mobileさえ公開されれば同等の機能を実現することができると思われる。ちなみにPC版のGoogle Mapsでも、KMLのURIをそのまま検索キーワードに掛ければ、KMLを読み込むことはできる。

Google Maps for Mobile (Googleマップモバイル)とKMLによるGPS連動 | FOMA 903i以降」への7件のフィードバック

  1. F904iでうまく行きました!!
    ただし、誤差が100メートルぐらいありました(笑)
    ってゆ~か携帯のGPS初めて使いました。

    ちなみにF904iもブラウザ上のテキストをコピーできませんでした。
    しかも、spacewalkerからのメールは受信許可していなかったので、
    自分のHotmailに一度送信してから、携帯に転送しました(笑)

    それにしてもこんなの作れてすごいですね。
    俺にはわからない用語がたくさん( ´_ゝ`)

    今度作ってほしいアプリがあるんですが…。

  2. nakayoさん>

    おひさしぶり。マカオはいってきたのかな?
    誤差が100mってことは室内で計測しました??見通しが良い外なら10m以下で決まると思います。

    このコピーペーストで送るところがださすぎますが、現状ではしょうがない感じです。

    私が対応できる範囲なら何でも作りますよ。アプリ。

  3. ブラウザコピペの問題ですが、ファイルシークやモバジラなどのPCサイト向けサイトの変換串をやってるサイトではページの文字をコピペできるような形で表示するサービスをやってるところがあります。
    そのサイトでは取得したサイトの文字データを入力フォームのタグの中に入れてしまうという方法をとっています。
    これならば、メールという形無くとも実装できるかと思います。

  4. 奈々氏さん

    なるほど。携帯でウェブを見ることがほとんどないので、コピーができないことは驚きでした。input textに入れてしまうのは良いアイデアですね!ちょっと時間を見つけて導入してみます。

  5. N903iで楽しく使わせてもらいました。
    やはりカット&ペーストはめんどくさいですね。
    iアプリの仕様書(iアプリコンテンツ開発ガイド for DoJa-5.x)を読むと、HTMLからの呼び出しやパラメータ渡しもできそうなので、アプリ側の作り方次第で、もうちょっと楽にGPS情報を渡せそうな気がしてます。
    googleのJapan blogからコメントが送れるみたいなので、一度メールしてみますね。

    [iアプリ仕様書のページ]
    http://www.nttdocomo.co.jp/service/imode/make/content/iappli/about/

コメントは停止中です。