티스토리 뷰
Overlay, 오버레이
패키지에 class 추가
package jh.jusoList;
import android.graphics.drawable.*;
import android.widget.*;
import com.google.android.maps.*;
import java.util.*;
import android.content.*;
public class MapItemizedOverlay extends ItemizedOverlay { // ItemizedOverlay 를 상속받는다.
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>(); // 레이어를 저장할 리스트 변수
private Context mContext; // 토스트(Toast, 팝업창)를 띄우기 위해서 액티비 객체를 카리킬 변수
public MapItemizedOverlay(Drawable defaultMarker, Context context) {
super(boundCenterBottom(defaultMarker)); // 레이어 위에 표시될 아이콘의 아래 중간 부분이 좌표에 위치하도록 지정
// TODO Auto-generated constructor stub
mContext = context;
}
@Override
protected OverlayItem createItem(int i) {
// TODO Auto-generated method stub
return mOverlays.get(i); // 지정한 번호에 해당하는 OverlayItem(레이어)을 리턴
}
@Override
public int size() {
// TODO Auto-generated method stub
return mOverlays.size(); // 레이어가 처리할 항목의 수
}
public void addOverlay(OverlayItem overlay){
mOverlays.add(overlay);
populate(); // add()가 호출될때마다 각각의 OverlayItem들을 읽어서 그려낼 준비를 한다.
}
@Override
protected boolean onTap(int index) { // 레이어 위의 색상 핀을 클릭할때 이벤트 발생
// TODO Auto-generated method stub
Toast.makeText(mContext, mOverlays.get(index).getSnippet() + "\r\n" + mOverlays.get(index).getTitle(), Toast.LENGTH_SHORT).show(); // 팝업으로 보여줄 메시지, 타이틀
return (true);
}
}
이 class 를 지도를 보여주는 class(MapActiviy 혹은 MapView를 상속받는 class) 의 멤버로 지정한다.
public class MapDemo extends MapActivity {
// 멤버변수 추가
List<Overlay> mapOverlays;
Drawable drawable;
MapItemizedOverlay itemizedOverlay;
public void onCreate(...){
//...생략
// 아래코드를 이 함수의 뒤부분에 추가한다.
drawable = this.getResources().getDrawable(R.drawable.marker); //색상핀 그림 등록
itemizedOverlay = new MapItemizedOverlay(drawable, this);
OverlayItem overlayitem = new OverlayItem(point, "대한민국의 수도(메시지)", "서울(타이틀)");
itemizedOverlay.addOverlay(overlayitem);
mapOverlays = map_view.getOverlays();
mapOverlays.add(itemizedOverlay);
}
}
아래 그림파일을 프로젝트의 res\drawable-hdpi 에 복사한다. (레이어 지정된 위치표시할 그림(색상 핀) market.png)
코드는 이처럼 정형화 되어 있음.
예제 코드는 위치 정보 프로바이더 글 참조