ちょっとだけ立体風地図ビューワ

Share

Androidのアプリケーションだと、地図が使えるものが面白そうだったので、早速作ってみました。既に類似のアプリケーションが世の中にあるかもしれませんが、勉強も兼ねてトライした結果です。

なお、プログラムの解説は特に設けませんが、個人的に気になったところは、別途メモのほうにまとめていくつもりですので、そちらをご参考にしてください。

 

実行に必要なSDKバージョン:1.6 (API Level 4) + Goole Map API

 

1.これはなに

今回作成したのは、『ちょっとだけ立体風地図ビューワ』というものです。

普通、地図は平面的(真上から地面をみたような絵)になっているので、これを斜め上から見たように表示させるビューワです。

普段見慣れている地図とは違う視点からみたい人にはおすすめです(実用的なアプリではないのでご容赦ください)。

エミュレータの画面キャプチャです。

スクリーンショットその1

スクリーンショットその2

 

2.機能

  • 地図を平面的な画面と、ちょっとだけ立体風の画面の2つで同時に表示します。
  • 地図は1画面での表示にも切り替えられます。
  • 画面にタッチすると操作ボタン類が表示されます。
  • 上下の矢印のボタンでカメラのチルトのように地図が変化します。
  • 回転のボタンで地図が回転します(コンパスとの連動はありません)
  • GPSと連動します。
  • 画面にタッチしたまま指を動かすことで、地図上の任意の位置を表示することができます(この操作をおこなうとGPSとの連動が自動的に切れます)
  • GPSと再度連動する場合は、現在位置ボタンを押してください。
  • ズームボタンも使えます。
  • アプリケーション終了後再度起動すると、前回終了時と同じ見え方で表示を再開します。

 

3.注意点

実はこのアプリは実機でのデバッグができなかったため、エミュレータ上でしか動作確認を行っていません。 従いまして、実機にインストールして使用した場合に、実用的な処理速度が得られるかどうかなど、まだ不明な点が多々あります。

このソフトウェアを、実機またはエミュレータにインストールして使用した際に生じたいかなる損害についても責任は取りません。くれぐれも自己責任でご使用ください。

 

(2010/5/13追記)

実機での動作を簡単に確認しました。機種によるかもしれませんが下記のような現象があります。

  • ボタンを押しっぱなしでは地図が変化しない場合があります。この場合、 何度か連続して押してみてください。
  • GoogleMapに比べて現在位置表示がずれる場合がある。

 

4.ダウンロード

いわゆる野良アプリとして公開します。実機でのデバッグを行っていないので、くれぐれもご注意ください。

perspectivemapviewer.apk (35707バイト)

 

また、ソースコードも公開しておきます。コメントも不十分でコードの構成も整理されていませんが、何かのお役に立つようであれば活用してください。

perspectivemapviewersource_1_0_0_public_20100513.zip (34516バイト)

(使い方)

このファイルはeclipseのプロジェクトをエクスポートしたzipファイルになります。ソースコードとリソースファイル、設定ファイルのみの構成にし てあります。

また、Google Map Apikey は設定していませんので、実行時にはご自分のapikeyを取得して、res/values/strings.xmlのmap_apikeyに設定して、再ビルド してください。

 

なお、ライセンスは下記のライセンスとします。

クリエイティブ・コモンズ 表示 2.1 日本

Creative Commons License
This 作品 by Junichi MORI is licensed under a Creative Commons 表示 2.1 日本 License

 

5.今後の予定

今考えていることをあげておきます。

  • ボタンタッチの操作感の見直し
  • GoogleMapとの位置ずれの原因究明と必要があれば改修する
  • 現在GPSオンオフ時にメッセージは表示されないが、今後操作タイミングにあわせて表示する(メニューで切り替えにする)
  • 電子コンパスに対応する

 

6.参考にしたサイト

全般

画像表示するAndroidアプリを作成する

フルスクリーンモードの作り方

レイアウトを動的に生成する関係

http://blogs.yahoo.co.jp/lakelake360/4871887.html (コードによるViewの生成方法を参考にしました)

Android XML View Inflation (XMLとコードを組み合わせてViewを生成する方法を参考にしました)

地図関係

MapViewを別のViewで表示する方法の参考(MapViewのデータを別Canvasに描画する方法を参考にしました)

android sdk 1.5r3 で方位によって回転するMapを作る

AndroidでGoogleMapをヘディングアップ表示 (回転後の地図の移動量補正を参考にしました)

graphics.camera関係

[android-developers] canvas and android.graphics.camera 3d rotation issue

タイマー関係

AndroidでTimer

Android で再開する Java プログラミング(2) - 図形の描画

Android java.util.Timerの罠 (タイマーに登録したタスクをキャンセルする方法を参考にしました)

公開方法

野良アプリを公開する方法

 

(2010/5/13追記)

  • 実機動作時の現象を追記しました。
  • ソースコードを公開しました。
  • 今後の予定を追記しました。