본문 바로가기
컴퓨터관련

안드로이드 overlay event

by 기록이답이다 2014. 1. 7.
반응형

overlay에 이벤트를 주기 위해서는 onTap 메소드를 재정의하면 되지만

내가 사용하려는 방법(QuickAction) 은 적용되지 않았다.

QuickAction을 사용하기 위해서는 agrument로 view를 넘겨줘야 하는데

overlay를 클릭시 넘겨주는 view를 mapview로 설정하면 mapview의 가장자리에서 quickAction이

적용이 되었다.

 그래서 다른방법으로 overlay의 위에 overlay와 같은 사이즈의 투명한 이미지뷰를 올려놓은다음 이미지뷰를 클릭하니 원하는 대로 나왔다.

   // 위치 설정

   Double commLat = Double.valueOf(item.lat) * 1E6;
   Double commLng = Double.valueOf(item.lng) * 1E6;
  
   GeoPoint geoPoint = new GeoPoint(commLat.intValue(), commLng.intValue());
   
   Projection projection = mapView.getProjection();

 

   // 위도,경도의 좌표값을 화면상의 point로 변경
   Point point = new Point();
   projection.toPixels(geoPoint, point);

 

   // overlay 이미지

   Bitmap marker = BitmapFactory.decodeResource(getResources(), R.drawable.icon_comm_interest);

 

   // 텍스트가 위치할 포인트
   GeoPoint textGeoPoint = projection.fromPixels(point.x + (marker.getWidth()/2) , point.y + (marker.getHeight()/2));

   
   MapView.LayoutParams lp = new MapView.LayoutParams(

  marker.getWidth()

, marker.getHeight()

, textGeoPoint

, MapView.LayoutParams.CENTER);

 

ImageView iv = communityAction.getImageView(item); // 이미지 뷰 클릭시 액션 설정
mapView.addView(iv, lp);

 

// 지도가 새로 로딩되면 기존의 이미지뷰들을 지워야 하기때문에 이미지뷰를 List에 저장해놓는다
ivList.add(iv);

 

      String selectCommunityId = intent.getStringExtra("selectCommunityId");
      if(selectCommunityId == null) selectCommunityId = "";
      
   boolean sweep = false;
   if(loginUserSweep == false) {
      f(selectCommunityId.equals(item.id)) sweep = true;
      lse sweep = false;
   }  

 

// 실제로 지도에 overlay를 그려주는 부분...

myOverlay = new CommunityOverlay(LoginUser.item.userId, item, marker, geoPoint, iv, sweep);
   overlays.add(myOverlay);
  } // end for

 

 

 public ImageView getImageView(final CommunityItem item) {
  ImageView iv = new ImageView(context);
  iv.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    quickAction = new QuickAction(v);

 

    // 각각의 액션을 추가해준다.
    quickAction.addActionItem(getActionCommunityInfo(item));  // 정보보기
    if(item.owner != null && item.owner.equals(LoginUser.item.userId)) quickAction.addActionItem(getActionCommunityModify(item)); // 커뮤니티 수정
    quickAction.addActionItem(getActionCommunityBoard(item)); // 게시판보기


    quickAction.setAnimStyle(QuickAction.ANIM_AUTO);   
    quickAction.show();
   }
  });  
  
  return iv;
 }

결과는 아래와 같다. 

 

 

반응형