まず、GoogleMapをIntentで起動し表示する基本的なコードは次の通りです。
public class GoogleMapTestActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); String mapurl = "geo:38.230844,140.323316"; //←ここの書き方で動作が微妙に変わる! Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setClassName("com.google.android.apps.maps","com.google.android.maps.MapsActivity"); intent.setData(Uri.parse(mapurl)); startActivity(intent); } }ここで、mapurlの部分の書き方によりいろんなパターンが指定できます。
ちなみにこの情報はGoogleMap アプリのバージョンで変わる可能性があります。
- 座標指定
- ピンを立てたい
- ズーム指定
mapurl = "geo:latitude,longitude"と指定した場合、 指定位置を中心とした地図を表示する。
その位置にPinは表示しない。
戻るボタン一回で元アプリに戻る。
mapurl = "geo:0,0?q=latitude,longitude"と指定した場合、 最初に(0,0)を指定、つまり現在位置の地図を表示する。
その後、latitude,longitudeで指定した位置を検索し検索位置を中心とした地図に移動する。
(検索位置への移動はアニメーション効果あり。)
0,0の代わりにlatitude,longitudeを指定すれば移動アニメーションは発生しないが、やはり動作は2段階になる。
指定位置にはピンを表示する。
戻るボタンは一回目で検索前の画面(つまりピンがない状態)に戻り、 2回目で元のアプリに戻る。
プログラム的には微妙に使いにくい。
mapurl = "geo:latitude,longitude?z=xx"でズーム指定ができます。
xxは1~23で1を指定すると全世界表示、23で最大拡大になります。
ただし、位置を指定して?z=1を指定するとエラーになることがある!
あくまでめやすですが、13~15で市町村サイズ・10~11で都道府県サイズ・6で日本全土サイズくらい。
今のところ、上記2の検索とズーム指定は組み合わせできないようだ…。
0 件のコメント:
コメントを投稿