티스토리 뷰

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)

사용자 삽입 이미지

코드는 이처럼 정형화 되어 있음.
예제 코드는 위치 정보 프로바이더 글 참조

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28