Tech. Forum 개발자들을 위한 정보 공유의 장입니다
닫기

Tech.Forum

마커 클릭시 이벤트 발생 질문입니다.

#1

setOnCalloutRightButtonClickListener()을 풍선안에 오른쪽버튼 눌르면 실행되는 함수가 있던데
마커클릭하면 바로 이벤트가 발생할수 있는 함수가 있나요 ??
그리고 다중마커를 표시하는데 표시된 마커를 클릭시 마커에 위경도값을 추출할수 있을까요 ??
밑에 코드는 다중마커를 표시하는 코드입니다.

m_mapPoint.add(new MapPoint(Name,radLat,radLon));

            TMapPoint point = new TMapPoint(radLat,radLon);
            TMapMarkerItem item1 = new TMapMarkerItem();
            Bitmap bitmap = null;
            bitmap = BitmapFactory.decodeResource(mContext.getResources(),R.drawable.mapmarker);

            item1.setTMapPoint(point);
            item1.setName(Name);
            item1.setVisible(item1.VISIBLE);

            item1.setIcon(bitmap);

            // bitmap = BitmapFactory.decodeResource(mContext.getResources(),R.drawable.mapmarker);

            item1.setCalloutTitle(Name);
            item1.setCalloutSubTitle(Name);
            item1.setCanShowCallout(true);
            //item1.setAutoCalloutVisible(true);

            Bitmap bitmap_i = BitmapFactory.decodeResource(mContext.getResources(),R.drawable.rightarrow);

            item1.setCalloutRightButtonImage(bitmap_i);

            String strID = String.format("pmarker"+row,mMarkerID++);

            tMapView.addMarkerItem(strID,item1);
            mArrayMarkerID.add(strID);
            //tMapView.addMarkerItem("marker"+row,marker);
0 Likes

#2

안녕하세요.

T map API 운영담당자입니다.

마커 이벤트는setOnclickListenerCallBack을 이용하시면 됩니다. 콜백리스너 등록 후 onPressEvent나 onPressUpEvent의 인자로 들어오는 ArrayList<TMapMarkerItem> arrayList에서 TMapMarkerItem의 정보를 설정하거나 가져올 수 있습니다.

아래의 샘플 코드를 참고하시면 도움이 되실 겁니다.

@Override public boolean onPressUpEvent(ArrayList<TMapMarkerItem> arrayList, ArrayList<TMapPOIItem> arrayList1, TMapPoint tMapPoint, PointF pointF) {

			for (TMapMarkerItem item : arrayList) {
				Toast.makeText(getApplicationContext(), String.valueOf(item.getTMapPoint()), Toast.LENGTH_LONG).show();
			}
			Log.d("EndTest", " EndTest");
			return false;
		}
	});

감사합니다.

0 Likes

#3

안녕하세요.
알려주신 방법으로 실행해서 각 마커에 위,경도값이 Toast메세지로 출력하는 것을 확인하였습니다.
String.valueOf(item.getTMapPoint())으로 값을 추출하는 것 같은데 혹시 위도와 경도 값을 따로 추출해서 변수에 저장하고 싶은데 방법이 있을까요 ??

0 Likes

#4

안녕하세요.

T map API 운영담당자입니다.

TMapMarkerItem 클래스의 getPositionX() 메소드와 getPositionY() 메소드로 마커의 중심 좌표 x값, y값을 반환할 수 있습니다.

아래의 가이드 링크를 참고하면 도움이 되실 겁니다. ---- <float getPositionX()> http://tmapapi.sktelecom.com/main.html#android/docs/androidDoc.TMapMarkerItem_getPositionX

<float getPositionY()> http://tmapapi.sktelecom.com/main.html#android/docs/androidDoc.TMapMarkerItem_getPositionY ----

감사합니다.

0 Likes

#5

안녕하세요.
답글달아주신 메소드를 이용하였는데 토스트메시지로 0.0 0.0이 출력됩니다.
getPositionX()와getPositionY() 메소드는 x값과y값을 가져오는 것 같은데 위도경도와 같은 건가요 ??

@Override
public boolean onPressUpEvent(ArrayList arrayList, ArrayList arrayList1, TMapPoint tMapPoint, PointF pointF) {
for (TMapMarkerItem item : arrayList) {
itemx = item.getPositionX();
itemy = item.getPositionY();
Toast.makeText(getApplicationContext(), String.valueOf(itemx)+String.valueOf(itemy), Toast.LENGTH_LONG).show();
}
Log.d(“EndTest”, " EndTest");

            return false;
        }
    });
0 Likes

#6

안녕하세요.

T map API 운영담당자입니다.

마커 객체가 갖고 있는 위도, 경도 정보를 가져오려면 마커의 TMapPoint정보를 getTMapPoint 메소드로 가져온 뒤 getLatitude 메소드와 getLongitude 메소드로 위도, 경도 정보를 가져올 수 있습니다.

자세한 내용은 아래의 링크를 참고하면 도움이 되실 겁니다.

---- < TMapPoint getLongitude > http://tmapapi.sktelecom.com/main.html#android/docs/androidDoc.TMapPoint_getLongitude < TMapPoint getLatitude > http://tmapapi.sktelecom.com/main.html#android/docs/androidDoc.TMapPoint_getLatitude ----

작성해 주신 for문의 내용을
아래의 코드로 테스트해보시면
도움이 되실 겁니다.

for (TMapMarkerItem item : arrayList) { TMapPoint markerSpot = item.getTMapPoint(); double markerSpotLatitude = markerSpot.getLatitude(); double markerSpotLongitude = markerSpot.getLongitude(); Toast.makeText(getApplicationContext(), "LAT 값 : " + markerSpotLatitude + " LON 값 : " + markerSpotLongitude, Toast.LENGTH_LONG).show(); }

감사합니다.

0 Likes