안드로이드 개발 질문/답변
(글 수 45,052)
맵뷰를 이용해 마커를 위도, 경도에 따라 여러개를 띄우고
그 마커를 클릭하면 말풍선(지금은 그냥 버튼)을 띄우는데 성공했습니다.
계획은
마커를 누르면 -> 말풍선이 뜨고 -> 말풍선이 뜬 상태에서 다른 마커를 누르면-> 현재 뜬 말풍선이 사라지고
클릭한 마커의 말풍선이 뜬다 입니다. ;
문제는 다른 마커를 클릭해도 말풍선이 계속 남아 있다는 것인데요 ;; 자신의 마커를 클릭했을때만 말풍선이 사라집니다.
일단 ontap의 소스는
if (!mBaloon.isShown()) {
OverlayItem item = mOverlays.get(index);
mBaloon.setText(item.getTitle());
MapView.LayoutParams params = new MapView.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT,item.getPoint(),
MapView.LayoutParams.BOTTOM_CENTER);
params.mode = MapView.LayoutParams.MODE_MAP;
mBaloon.setVisibility(View.VISIBLE);
mapview.addView(mBaloon, params);
}else{
mapview.removeView(mBaloon);
mBaloon.setVisibility(View.GONE);
}
(mbaloon은 버튼이고 나중에 이미지구하면 이미지버튼으로 바꾸려고 합니다)
저렇게해서 버튼에 getTitle를 setText한 것인데요 ;;
다른 마커를 클릭했을시에 떠있던 말풍선을 없애는 방법이 있을까요?
그 마커를 클릭하면 말풍선(지금은 그냥 버튼)을 띄우는데 성공했습니다.
계획은
마커를 누르면 -> 말풍선이 뜨고 -> 말풍선이 뜬 상태에서 다른 마커를 누르면-> 현재 뜬 말풍선이 사라지고
클릭한 마커의 말풍선이 뜬다 입니다. ;
문제는 다른 마커를 클릭해도 말풍선이 계속 남아 있다는 것인데요 ;; 자신의 마커를 클릭했을때만 말풍선이 사라집니다.
일단 ontap의 소스는
if (!mBaloon.isShown()) {
OverlayItem item = mOverlays.get(index);
mBaloon.setText(item.getTitle());
MapView.LayoutParams params = new MapView.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT,item.getPoint(),
MapView.LayoutParams.BOTTOM_CENTER);
params.mode = MapView.LayoutParams.MODE_MAP;
mBaloon.setVisibility(View.VISIBLE);
mapview.addView(mBaloon, params);
}else{
mapview.removeView(mBaloon);
mBaloon.setVisibility(View.GONE);
}
(mbaloon은 버튼이고 나중에 이미지구하면 이미지버튼으로 바꾸려고 합니다)
저렇게해서 버튼에 getTitle를 setText한 것인데요 ;;
다른 마커를 클릭했을시에 떠있던 말풍선을 없애는 방법이 있을까요?




자문자답입니다....
@Override
public boolean onTouchEvent(MotionEvent motionevent, MapView mapview) {
mapview.removeView(mBaloon);
return super.onTouchEvent(motionevent, mapview);
}
ontouchevent 오버라이드로 받아서 마커를 클릭했을때 맵뷰의 말풍선을 지우겠음;;
그런뒤에 바로 ontap이 실행되니... 말풍선지워지고 , 선택된 마커의 말풍선이 뜨네요
요런게 있었넹 ;