Hatena::ブログ(Diary)

備忘録 このページをアンテナに追加 RSSフィード Twitter

2012-12-17

Google Maps Android API v2 はGoogle Maps API v3 みたいにマーカーの追加が簡単!

Google Maps Android API v2 は Google Maps API v3 みたいに addMarker とかしていけるから楽

あと 吹き出しもデフォルトで使えるようになってるので便利


package com.maps;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MainActivity extends FragmentActivity {
	private static final String TAG_MAP_FRAGMENT = "MAP_FRAGMENT";
	private static final LatLng TOKYO = new LatLng(35.681382, 139.766084);
	private static final LatLng UnivAizu = new LatLng(37.523796,139.938733);
	private SupportMapFragment mMapFragment;
	private GoogleMap mMap;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		// 登録したタグから MapFragment を取得する(デバイス回転などの再生成対策)
		mMapFragment = (SupportMapFragment) getSupportFragmentManager()
				.findFragmentByTag(TAG_MAP_FRAGMENT);
		if (mMapFragment == null) {
			// MapFragment がなければ作成する
			mMapFragment = SupportMapFragment.newInstance();
			getSupportFragmentManager().beginTransaction()
			.add(android.R.id.content, mMapFragment, TAG_MAP_FRAGMENT)
			.commit();
		}
	}

	@Override
	protected void onResume() {
		super.onResume();

		if (mMap == null) {
			// MapFragment から GoogleMap を取得する
			mMap = mMapFragment.getMap();
			if (mMap != null) {
				// マップをハイブリッド表示にする
				mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);

				// 屋内マップ表示を無効にする(標準は true)
				mMap.setIndoorEnabled(false);

				// 現在地表示ボタンを有効にする
				mMap.setMyLocationEnabled(true);
				// UiSettings にボタン表示設定があるが標準は true なので設定不要
				// mMap.getUiSettings().setMyLocationButtonEnabled(true);

				// 東京駅にマーカーをつける
				mMap.addMarker(new MarkerOptions()
				.position(TOKYO)
				.title("東京駅")
				.snippet("2012年10月1日に復元工事が完了")
				.icon(BitmapDescriptorFactory
						.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));

				mMap.addMarker(new MarkerOptions()
				.position(UnivAizu)
				.title("天空都市")
				.snippet("定期的に浮上中")
				.icon(BitmapDescriptorFactory
						.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));


				// カメラの位置を東京駅に変える
				this.moveCameraToLatLng(false,TOKYO);

				// 地図の長押しでカメラを東京駅まで移動する
				mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
					@Override
					public void onMapLongClick(LatLng point) {
						moveCameraToLatLng(true,UnivAizu);
					}
				});
			}
		}
	}

	/**
	 * カメラを任意の位置に移動する
	 *
	 * @param isAnimation
	 * アニメーション移動するかの判定。true でアニメーション移動。
	 * @param target
	 * ターゲットの位置 LatLng型
	 */
	private void moveCameraToLatLng(boolean isAnimation,LatLng target) {
		// カメラの位置情報を作成する
		CameraUpdate camera = CameraUpdateFactory
				.newCameraPosition(new CameraPosition.Builder()
				.target(target)
				.zoom(18.0f).build());
		if (isAnimation) {
			// アニメーション移動する
			mMap.animateCamera(camera);
		} else {
			// 瞬間移動する
			mMap.moveCamera(camera);
		}
	}


}

ほとんどここを参考

東京駅に最初はマーカーが置かれてる

地図を長押しすると会津大学へカメラ移動




MapFragment に現在地表示、マーカー表示などの機能を追加する - 戌印-INUJIRUSHI- (Androidあれこれ) -

http://inujirushi123.blog.fc2.com/blog-entry-100.html

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/xlis/20121217/1355747372
リンク元