안드로이드 개발 질문/답변
(글 수 45,052)
ItemizedOverlay를 상속받아 마커를 표시했는데요.
마커 클릭시 AlertDialog가 나와서 주소나 이런 저런 정보를 표현해 주려고합니다.
마커 클릭 이벤트 발생시 onTap 메서드를 구현해서 처리하려고 합니다.
헌데, ItemizedOverlay를 상속받은 클래스에서 AlertDialog를 어떻게 생성해야할지 잘 모르겠습니다.
기본 MapActivity 인스턴스를 가져와서 그 위에 AlertDialog를 띄울 방법은 없는지요?
아니면 다른 방법으로 우회해야하는지요.
그렇다면 그 방법이나 아이디어 좀 주시면 감사하겠습니다.
마커 클릭시 AlertDialog가 나와서 주소나 이런 저런 정보를 표현해 주려고합니다.
마커 클릭 이벤트 발생시 onTap 메서드를 구현해서 처리하려고 합니다.
헌데, ItemizedOverlay를 상속받은 클래스에서 AlertDialog를 어떻게 생성해야할지 잘 모르겠습니다.
기본 MapActivity 인스턴스를 가져와서 그 위에 AlertDialog를 띄울 방법은 없는지요?
아니면 다른 방법으로 우회해야하는지요.
그렇다면 그 방법이나 아이디어 좀 주시면 감사하겠습니다.
2009.06.30 01:32:47
AlertDialog는 그냥 생성하면 되지 않나요? 말씀하신대로 MapActivity를 가져와야하면 해당 인스턴스를 상속받은 클래스 생성자에 넘겨주어도 될것이구요.
2009.06.30 10:05:10
답변감사합니다.
생성자로 MapActivity를 넘긴다는 생각은 못했네요.
헌데, Dialog생성시 다음과 같은 에러가 납니다.
Caused by: java.lang.IllegalArgumentException: MapViews can only be created inside instances of MapActivity.
MapActivity의 onCreate() 메소드에서 ItemizedOverlay 인스턴스를 생성하는 코드입니다.
4번째 라인에서 MapActivity 인스턴스를 넘겨줍니다.
mapOverlays = mapView.getOverlays(); drawable = this.getResources().getDrawable(R.drawable.androidmarker); itemizedOverlay = new HelloItemizedOverlay(drawable, GoogleMap.this); GeoPoint point = new GeoPoint(19240000, -99120000); OverlayItem overlayitem = new OverlayItem(point, "", ""); itemizedOverlay.addOverlay(overlayitem); mapOverlays.add(itemizedOverlay);
다음은 HelloItemizedOverlay 클래스의 생성자 코드입니다.
private Context ct; public HelloItemizedOverlay(Drawable defaultMarker, Context ct) { super(boundCenterBottom(defaultMarker)); this.ct = ct; }
마지막으로 HelloItemizedOverlay 클래스의 onTap 구현부 입니다.
protected boolean onTap(int index) { Dialog d = new Dialog(ct); Window window = d.getWindow(); window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND); d.setTitle("This is Title"); d.setContentView(R.layout.main); d.show(); return true; }