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

Tech.Forum

현재위치에서 지정된 좌표까지 경로 그리기

#1

현재위치잡아서 특정위치까지 보행자경로를 그리고싶은데
위치까진 잡아졌는데 폴리라인이 안그려져서… 폴리라인 그리는 함수부분이 잘못된거같은데 한번봐주시면 감사하겠습니다 ㅠㅠ

public class MainActivity extends AppCompatActivity implements TMapGpsManager.onLocationChangedCallback {

private boolean m_bTrackingMode = true;
private TMapGpsManager tmapgps = null;
private TMapView tMapView = null;
private TMapPoint tpoint = null;
private double currentLatitude;
private double currentLongitude;
private static String mApiKey = "--------";

@Override
public void onLocationChange(Location location) {

    if (m_bTrackingMode) {
        tMapView.setLocationPoint(location.getLongitude(), location.getLatitude());
        tMapView.setCenterPoint(location.getLongitude(), location.getLatitude());


    }
    currentLatitude = location.getLatitude();
    currentLongitude = location.getLongitude();
}

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
    LinearLayout LinearLayoutTmap = (LinearLayout) findViewById(R.id.LinearLayoutTmap);
    tMapView = new TMapView(this);
    TMapData tMapData = new TMapData();
    LinearLayoutTmap.addView(tMapView);
    tMapView.setSKTMapApiKey(mApiKey);

    //tMapView.setCenterPoint( 127.058677, 37.585061);
    tMapView.setZoomLevel(15);
    tMapView.setCompassMode(true); /*현재보는방향*/
    tMapView.setIconVisibility(true); /*현위치 아이콘 표시*/

    tMapView.setMapType(TMapView.MAPTYPE_STANDARD);
    tMapView.setLanguage(TMapView.LANGUAGE_KOREAN);

    tmapgps = new TMapGpsManager(MainActivity.this);
    tmapgps.setMinTime(1000);
    tmapgps.setMinDistance(5);
    tmapgps.setProvider(tmapgps.NETWORK_PROVIDER);

    //tmapgps.setProvider(tmapgps.GPS_PROVIDER); //gps로 현 위치 잡기
    tmapgps.OpenGps();

    tMapView.setTrackingMode(true);
    tMapView.setSightVisible(true);

    drawPedestrianPath();

}

public void drawPedestrianPath() {
    TMapPoint tMapPointStart = new TMapPoint(currentLatitude, currentLongitude);
    TMapPoint tMapPointEnd = new TMapPoint(35.134819, 129.103064);

    TMapData tmapdata = new TMapData();

    tmapdata.findPathDataAllType(TMapPathType.PEDESTRIAN_PATH, tMapPointStart, tMapPointEnd, new TMapData.FindPathDataAllListenerCallback() {
        @Override
        public void onFindPathDataAll(Document document) {
            Element root = document.getDocumentElement();
            NodeList nodeListPlacemark = root.getElementsByTagName("Placemark");
            for( int i=0; i<nodeListPlacemark.getLength(); i++ ) {
                NodeList nodeListPlacemarkItem = nodeListPlacemark.item(i).getChildNodes();
                for( int j=0; j<nodeListPlacemarkItem.getLength(); j++ ) {
                    if( nodeListPlacemarkItem.item(j).getNodeName().equals("description") ) {
                        Log.d("debug", nodeListPlacemarkItem.item(j).getTextContent().trim() );
                    }
                }
            }
        }
    });
}

}

0 Likes

#2

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

문의주신 내용을 검토해본 결과 findPathDataAllType 함수는 해당 경로에 대한 Response Parameter를 파싱하기 위해 사용되는 함수입니다.

Document 내에서 좌표 정보가 들어있는 coordinates를 찾아 TMapPoint로 별도의 PolyLine을 그려주면 원하시는 결과를 얻으실 수 있습니다.

자세한 내용은 아래의 가이드샘플과 docs를 참조하시면 도움이 되실 겁니다.


< 선 그리기 >
http://tmapapi.sktelecom.com/main.html#android/sample/androidSample.sample5


< 자동차 경로안내 >
http://tmapapi.sktelecom.com/main.html#webservice/docs/tmapRouteDoc

감사합니다.

0 Likes