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

Tech.Forum

풍선뷰 클릭 이벤트를 하고 있는데 클릭이 안되서 문의드립니다.

#1

안드로이드 스튜디오로 tmap api를 사용해서 작업을 하고 있는데 말풍선을 클릭하면 그거에 대한 이벤트를 호출하는 작업을 했는데 Toast 메시지나 System.out.println이 출력이 안되서 그런데 뭐가 문제점인지 알수 있을까요???.. 초보 개발자입니다…
public void getData(){
String url=“http://3.122.12373231.2321:3232/SunhanWeb/androidgetStoreServlet.do”;

    // Request a string response from the provided URL.
    StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    // Display the first 500 characters of the response string.
                    Log.d("StoreData",response);
                    //response를 StoreData Class에 분류
                    //try catch 구문 사용하는 이유는 response가 json이 아닌데 사용할려고 하다보니 생기는 문제!!!!!!!!!!!!!
                    try {
                        JSONObject jsonObject=new JSONObject(response);
                        JSONArray jsonArrayArticles=jsonObject.getJSONArray("storelist");
                        List<StoreVO> storeVOS=new ArrayList<>();
                        List<Address> list=null;
                        for(int i=0, j=jsonArrayArticles.length(); i<j; i++){
                            JSONObject object=jsonArrayArticles.getJSONObject(i);
                            Log.d("StoreData",object.toString());
                            StoreVO storeVO=new StoreVO();
                            storeVO.setId(object.getString("userid"));
                            storeVO.setFoodCheck(object.getString("food"));
                            System.out.println("음식"+object.getString("food"));
                            if(object.getString("food").equals("한식")){
                                System.out.println("한식이다!!!");
                                bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.rice);
                                int height=bitmap.getHeight();
                                int width=bitmap.getWidth();
                                bitmap = Bitmap.createScaledBitmap(bitmap, 120, height/(width/120), true);
                            }
                            else if(object.getString("food").equals("중식")){
                                System.out.println("중식이다!!!");
                                bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.jajangmyeon);
                                int height=bitmap.getHeight();
                                int width=bitmap.getWidth();
                                bitmap = Bitmap.createScaledBitmap(bitmap, 120, height/(width/120), true);
                            }
                            else if(object.getString("food").equals("양식")){
                                System.out.println("양식이다!!!");
                                bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sushi);
                                int height=bitmap.getHeight();
                                int width=bitmap.getWidth();
                                bitmap = Bitmap.createScaledBitmap(bitmap, 120, height/(width/120), true);
                            }
                            else if(object.getString("food").equals("일식")){
                                System.out.println("일식이다!!!");
                                bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sushi);
                                int height=bitmap.getHeight();
                                int width=bitmap.getWidth();
                                bitmap = Bitmap.createScaledBitmap(bitmap, 120, height/(width/140), true);
                            }
                            else if(object.getString("food").equals("분식")){
                                System.out.println("분식이다!!!");
                                bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.rice);
                                int height=bitmap.getHeight();
                                int width=bitmap.getWidth();
                                bitmap = Bitmap.createScaledBitmap(bitmap, 120, height/(width/120), true);
                            }
                            else if(object.getString("food").equals("디저트")){
                                System.out.println("디저트다!!!");
                                bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.desert);
                                int height=bitmap.getHeight();
                                int width=bitmap.getWidth();
                                bitmap = Bitmap.createScaledBitmap(bitmap, 120, height/(width/120), true);
                            }
                            storeVO.setStoreName(object.getString("shopname"));
                            storeVO.setArea(object.getString("area"));
                            storeVO.setCloseTime(object.getString("closetime"));
                            storeVO.setOpenTime(object.getString("opentime"));
                            storeVO.setStorephone(object.getString("StorePhone"));
                            storeVO.setComments(object.getString("comments"));
                            storeVO.setSendData(object.getString("addr"));
                            storeVO.setImage(object.getString("fileRealName"));
                            //11
                            try {

// String a=object.getString(“addr”);
list=geocoder.getFromLocationName(
object.getString(“addr”),
object.length() //읽은개수
);
}catch (Exception e){
e.printStackTrace();
System.out.println(“주소 변환시 에러발생”);
}
if(list!=null){
if(list.size()==0){
System.out.println(“길이가 없음!!!”);
}
else{
Address addr=list.get(0);
double lat=addr.getLatitude();
double lon=addr.getLongitude();
TMapPoint point = new TMapPoint(lat,lon);
TMapMarkerItem marker = new TMapMarkerItem();
marker.setPosition(0.5f, 1.0f);
marker.setIcon(bitmap);
marker.setTMapPoint(point);
marker.setName(object.getString(“shopname”));
marker.setVisible(TMapMarkerItem.VISIBLE);
//풍선뷰
marker.setCalloutTitle(object.getString(“shopname”));
marker.setCanShowCallout(true);
marker.setAutoCalloutVisible(true);
// Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(),);
// marker.setCalloutLeftImage(bitmap1);
tMapView.setOnCalloutRightButtonClickListener(new TMapView.OnCalloutRightButtonClickCallback(){
@Override
public void onCalloutRightButton(TMapMarkerItem tMapMarkerItem) {
System.out.println(“풍선뷰클릭”);
Toast.makeText(getActivity(),“클릭”,Toast.LENGTH_SHORT).show();
}
});
tMapView.addMarkerItem(“marker”+i,marker);
System.out.println(“위도 경도 값이다:!!!”+lat+lon);
}
}
storeVO.setTopMessage(object.getString(“topmessage”));
storeVOS.add(storeVO);
}

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            }, new Response.ErrorListener() {
0 Likes

#2

안녕하세요.

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

setOnCalloutRightButtonClickListener()함수는 풍선뷰의 오른쪽 이미지 아이콘
클릭시 발생되는 이벤트 리스너를 등록하는 함수입니다.
사용을 위해서 setCalloutRightButtonImage()함수를 통해 풍선뷰의 오른쪽
아이콘 이미지를 등록하여 사용하시면 정상적으로 동작이 될것입니다.

만약, 오른쪽 아이콘을 클릭하지 않고 말풍선 자체의 클릭이벤트를
사용하실려면, 마커 생성시 markerItem2를 사용하여 생성하셔야 하며,
이후, setOnMarkerClickEvent()함수를 통해 풍선뷰의 이벤트를 등록하여 사용하실수 있습니다.
해당 내용과 관련하여 예제와 가이드 링크를 남겨 드리겠습니다.
참고하시면 도움이 되실겁니다.


Ex)
mMapView.setOnMarkerClickEvent(new TMapView.OnCalloutMarker2ClickCallback() {
@Override
public void onCalloutMarker2ClickEvent(String id, TMapMarkerItem2 markerItem2) {
String strMessage = "ClickEvent " + " id " + id + " " + markerItem2.latitude + " " + markerItem2.longitude;
Log.d(“log”, strMessage);
}
});

[TMapMarkerItem2 Doc]
http://tmapapi.sktelecom.com/main.html#android/docs/androidDoc.TMapMarkerItem2


감사합니다.

0 Likes

#3

감사합니다!!! 해결되었습니다 좋은 하루보내세여!

0 Likes