ItemizedOverlay 는 MapView 위에 여러 지점을 동시에 표시하고 싶을 때 사용하는 클래스인 것 같다.

아래는 ItemizedOverlay 를 이용한 예제...



MapViewer.java

package com.huikyun.android.mapsamples;

import java.util.List;

import android.graphics.drawable.Drawable;
import android.os.Bundle;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;

public class MapViewer extends MapActivity {
	private MapView mMapView;
	private MapController mMapController;

	private List mMapOverlays;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.map_viewer);

		mMapView = (MapView) findViewById(R.id.mapView);
		mMapController = mMapView.getController();

		mMapOverlays = mMapView.getOverlays();

		GeoPoint geoPoint = new GeoPoint(37498806, 126932621);
		mMapController.animateTo(geoPoint);
		mMapController.setZoom(16);

		Drawable drawable = getResources().getDrawable(R.drawable.androidmarker);
		HelloItemizedOverlay itemizedOverlay = new HelloItemizedOverlay(drawable);

		OverlayItem overlayItem = new OverlayItem(geoPoint, "Item 1", "1번 아이템");

		itemizedOverlay.addOverlay(overlayItem);

		mMapOverlays.add(itemizedOverlay);
	}

	@Override
	protected boolean isRouteDisplayed() {
		return false;
	}
}



HelloItemizedOverlay.java

package com.huikyun.android.mapsamples;

import java.util.ArrayList;

import android.app.AlertDialog;
import android.content.Context;
import android.graphics.drawable.Drawable;

import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;

public class HelloItemizedOverlay extends ItemizedOverlay {
	private Context mContext;

	private ArrayList mOverlays = new ArrayList();

	public HelloItemizedOverlay(Drawable defaultMarker) {
		super(boundCenterBottom(defaultMarker));
	}

	public HelloItemizedOverlay(Drawable defaultMarker, Context context) {
		super(defaultMarker);

		mContext = context;
	}

	public void addOverlay(OverlayItem overlay) {
		mOverlays.add(overlay);

		populate();
	}

	@Override
	protected OverlayItem createItem(int i) {
		return mOverlays.get(i);
	}

	@Override
	protected boolean onTap(int index) {
		OverlayItem item = mOverlays.get(index);

		AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
		dialog.setTitle(item.getTitle());
		dialog.setMessage(item.getSnippet());
		dialog.show();

		return true;
	}

	@Override
	public int size() {
		return mOverlays.size();
	}
}



Posted by Huikyun