\ꂽGoogle Map̏ɃACR\ɂGoogle Map\NXƂ͕ʂɐVȃNXƂItemizeOvelay<Overlay>̔hNX쐬AMapViewOverlayɒljB QlTCgAndroid Wiki@Google MapDrawablezuhttp://wikiwiki.jp/android/?Google%20Map%A4%CBDrawable%A4%F2%C7%DB%C3%D6%A4%B9%A4%EB PinItemizedOverlay.java public class PinItemizedOverlay extends ItemizedOverlay<PinOverlayItem> { private List<GeoPoint> points = new ArrayList<GeoPoint>(); public PinItemizedOverlay(Drawable defaultMarker) { super( boundCenterBottom(defaultMarker) ); } @Override protected PinOverlayItem createItem(int i) { GeoPoint point = points.get(i); return new PinOverlayItem(point); } @Override public int size() { return points.size(); } public void addPoint(GeoPoint point) { this.points.add(point); populate(); } public void clearPoint() { this.points.clear(); populate(); } } PinOverlayItem.java public class PinOverlayItem extends OverlayItem { public PinOverlayItem(GeoPoint point){ super(point, "", ""); } } boundCenterBottomという文はDrawable(アイコン)の原点を画像の下部中央に位置づけます。 。 描画するポイントをGeoPointクラスが緯度(latitude)と、経度(longitude)をint型で保持し、Map上の座標の指定/取得に使用します。 サンプルでは東京駅と大阪駅の2つのGeoPointを登録し、PinItemizedOverlayのアイコンとしてpin.pngを渡します。 pin.pngファイルは、res/drawableディレクトリに追加します。 SimpleMapActivity.java public class SimpleMapActivity extends MapActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_map); MapView map = (MapView)findViewById( R.id.map); map.setClickable(true); map.setBuiltInZoomControls(true); Drawable pin = getResources().getDrawable( R.drawable.pin); PinItemizedOverlay pinOverlay = new PinItemizedOverlay( pin); map.getOverlays().add( pinOverlay); GeoPoint tokyo = new GeoPoint( 35681396, 139766049); GeoPoint osaka = new GeoPoint( 34701895, 135494975); pinOverlay.addPoint( tokyo); pinOverlay.addPoint( osaka); } @Override protected boolean isRouteDisplayed() { return false; } }
|