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

Tech.Forum

첫 화면을 지정한 마커2개가 표시되었는 화면으로 이동

#1

현재 첫 화면은 을지로입구역이 뜨고 있습니다.
그리고 마커는 청주에서 뜨고 있어서 마커를 보려면 스크린을 손으로 직접 움직여야 합니다.

첫 화면이 지정한 마커 2개가 뜨고
사진처럼 꽉 찬 화면에 양 끝으로 마커가 보이게 할 수 있는 방법이 있을까요?

0 Likes

#2

안녕하세요.
Tmap API 운영담당자입니다.

해당 기능과 관련해서 ArrayList<TmapPoint>를 생성하여,
마커의 좌표를 담고, getDisplayTMapInfo()함수를 호출하시면
좌표를 지도에서 모두 볼수 있는 최적화된 중심점을 얻으실수 있고,
해당 중심점으로 setCenterPoint()함수를 호출하시면 됩니다.

해당 내용과 관련하여 아래에 작은 예시와 가이드 링크를 남겨드리겠습니다.
참고하시면 도움이 되실겁니다.


Ex)
ArrayList<TMapPoint> point = new ArrayList<TMapPoint>();
point.add(point1);
point.add(point2);
TMapInfo info = mMapView.getDisplayTMapInfo(point);
mMapView.setCenterPoint(info.getTMapPoint().getLongitude(),info.getTMapPoint().getLatitude());

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

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


감사합니다.

1 Like

#3

20200605114840

답변 감사드립니다.
예시로 주신 코드로 했더니 첫 화면으로 마커 2개의 중심으로 이동했습니다.
하지만 마커 2개가 보이는 화면을 보려면 첫 화면에서 손가락으로 두번 축소해야 합니다.

확대된 정도를 줄이기 위해 TMapInfo info = tMapView.getDisplayTMapInfo(point); 이 중 getDisplayTMapInfo(point)부분을 수정하려고 타고 들어갔더니 read only라고 뜹니다. 그래서 downloadResource를 했는데 다운로드가 진행은 되는데 완료 되지 않아서 read only는 똑같이 뜹니다.

어떤 해결방안이 있을까요?

0 Likes

#4

안녕하세요.
Tmap API 운영담당자입니다.

getDisplayTMapInfo() 함수의 Doc 설명을 보시면,
최적화된 상태로 보일수 있는 ZoomLevel과 중심점을 담은
TmapInfo개체를 반환받습니다.
사용 하신 예제의 info객체의 info.getTMapZoomLevel()를
사용하시면 최적의 줌레벨을 반환받고 setZoomLevel()함수를
사용하시면 됩니다.

해당부분에 추가 예시를 남겨드리겠습니다.
참고하시면 도움이 되실겁니다.


Ex)
mMapView.setZoomLevel(info.getTMapZoomLevel());

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


감사합니다.

1 Like

#5

최적화된 상태로 보일수 있는 ZoomLevel과 중심점을 담은 TmapInfo개체를 반환받습니다.라고 말씀해 주셨는데 왜 이렇게 나오는지 모르겠습니다

0 Likes

#6

안녕하세요.
Tmap API 운영담당자입니다.

현재 테스트시 잘동작 하였습니다.
사용하신 좌표를 알려주시면, 해당 좌표값으로 테스트를
진행해보겠습니다.
아래에는 위의 알려드린 예제를 종합하여 남겨드리겠습니다.


Ex)
ArrayList<TMapPoint> point = new ArrayList<TMapPoint>();
point.add(point1);
point.add(point2);
TMapInfo info = mMapView.getDisplayTMapInfo(point);
mMapView.setCenterPoint(info.getTMapPoint().getLongitude(),info.getTMapPoint().getLatitude());
mMapView.setZoomLevel(info.getTMapZoomLevel());


감사합니다.

0 Likes

#7

“startX”: 127.430101 - 승차 정류장 경도
“startY”: 36.626517 - 승차 정류장 위도
“endX”: 127.489123 - 하차 정류장 경도
“endY”: 36.650657 - 하차 정류장 위도

종합해서 올려주신 예제랑 저랑 똑같습니다!

0 Likes

#8

안녕하세요.
Tmap API 운영담당자입니다.

남겨주신 좌표를 가지고 테스트를 진행 하였습니다.
테스트 결과 정상적으로 동작이 이루어졌으며,

아래에는 테스트를 진행한 코드를 남겨드리겠습니다.
참고하시면 도움이 되실겁니다.
이후에도 해당 오류가 계속 나타나신다면, 사용하신 코드를 남겨주시면,
자세하게 답변 드리도록 하겠습니다.


Ex)

TMapPoint point_start = new TMapPoint(36.626517, 127.430101);
TMapPoint point1_end = new TMapPoint(36.650657, 127.489123);

TMapMarkerItem marker1 = new TMapMarkerItem();
TMapMarkerItem marker2 = new TMapMarkerItem();

marker1.setTMapPoint(point_start);
marker2.setTMapPoint(point1_end);

mMapView.addMarkerItem(“marker1”,marker1);
mMapView.addMarkerItem(“marker2”,marker2);

ArrayList point = new ArrayList();
point.add(point_start);
point.add(point1_end);
TMapInfo info = mMapView.getDisplayTMapInfo(point);
mMapView.setCenterPoint(info.getTMapPoint().getLongitude(),info.getTMapPoint().getLatitude());
mMapView.setZoomLevel(info.getTMapZoomLevel());


감사합니다.

0 Likes

#9

올려주신 코드랑 똑같지 않나요???
진짜 의문이네요…!


도보경로에다 똑같이 한거는 잘 됩니다

0 Likes

#11

안녕하세요.
Tmap API 운영담당자입니다.

사용하신 소스의 위치를 보면 Tmap지도가 모두 로드가 되기전
해당 함수를 호출하여 정확한 지도의 정보를 받아오지 못해 발생된
에러입니다. 위의 코드를 지도가 모두 로드가 된 이후에 호출하시면,
정상적으로 진행이 되며, 지도가 로드되는 동기를 맞추어 사용하시면 정상 동작 합니다.

아래에는 동기를 맞추는 간단한 예제코드를 남겨드리겠습니다.
참고하시면 도움이 되실겁니다.


Ex)
Handler deleyHandler = new Handler();
deleyHandler.postDelayed(new Runnable() {
@Override
public void run() {
TMapPoint point_start = new TMapPoint(36.626517, 127.430101);
TMapPoint point1_end = new TMapPoint(36.650657, 127.489123);
TMapMarkerItem marker1 = new TMapMarkerItem();
TMapMarkerItem marker2 = new TMapMarkerItem();
marker1.setTMapPoint(point_start);
marker2.setTMapPoint(point1_end);
mMapView.addMarkerItem(“marker1”,marker1);
mMapView.addMarkerItem(“marker2”,marker2);

            ArrayList<TMapPoint> point = new ArrayList<TMapPoint>();
            point.add(point_start);
            point.add(point1_end);

            TMapInfo info = mMapView.getDisplayTMapInfo(point);

            String strInfo = "Center Latitude" + info.getTMapPoint().getLatitude() + "Center Longitude" + info.getTMapPoint().getLongitude() +
                    "Level " + info.getTMapZoomLevel();

            mMapView.setCenterPoint(info.getTMapPoint().getLongitude(),info.getTMapPoint().getLatitude());
            mMapView.setZoomLevel(info.getTMapZoomLevel());
        }
    },100);

감사합니다.

0 Likes