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

Tech.Forum

주소를 좌표로 변환할려고 합니다 지오코딩을 잘 모르겠습니다

#1

주소를 좌표로 변환할려면 지오코딩을 사용을 해야한다고 봤는데 그걸 어떤식으로 사용을 해야 하는지 잘 모르겠습니다…검색하고 해도 ㅠㅠ 최종적으로 에디트텍스트에 주소를 저장하고 가져온 후 현재위치에서 그 주소로 길을 찾을려고 합니다.
질문은 세가지입니다.
1.지오코딩사용법(주소 -> 좌표로 변환)

  1. 대중교통이나 이런 기능도 제공하나요???

3.혹시 politem클래스가 있던데 이 이 클래스에는 어떠한 데이터들이 있는 건가요??따로 주소를 입력안해도 그에 맞는 명칭(?)이 뜨는 기능들도 있는 것 같아서 궁금합니다 … 잘 모르겠구…

0 Likes

#2

안녕하세요.

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

API를 사용하시는 환경을 명시하지 않아, poiitem과 edittext를 사용하신다는 것을 유추해서
안드로이드에서 사용하시는 것으로 간주하여 답변 드리겠습니다.

1.안드로이드에서 지오코딩 사용은 REST API를 호출하여 사용하셔야 합니다.
하지만, 원하시는 기능이 주소->좌표 의 기능을 원하시면 POI검색을 통해
얻어진 poiitem의 point 값을 사용하시면 됩니다.
아래의 (1) 예시와 링크를 참고하시면 도움이 되실겁니다.

2.길찾기시 대중교통의 기능을 물으신것이면, 아직은 제공하고 있지 않습니다.
3.POI 정보를 관리하는 클래스 입니다. 아래의 (3). 링크를 참고하시면 될것 같습니다.


(1). REST API - EX)
URL url = new URL(“사용하고자 하는 API URL”);
urlConn = (HttpURLConnection) url.openConnection();
(이후 URL통신 진행)

[주소검색 POI 요청]
http://tmapapi.sktelecom.com/main.html#android/docs/androidDoc.TMapData_findAddressPOI_2

(3). [TMapPOIItem]
http://tmapapi.sktelecom.com/main.html#android/docs/androidDoc.TMapPOIItem


감사합니다.

0 Likes

#3

답변 정말 정말 감사합니다.그러면 현재 가능한 기능은 자동차 경로를 그려주는 것만 가능한 건가요???

0 Likes

#4

안녕하세요.

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

자동차 경로와 보행자 경로 두가지를 선택하셔서 사용하실수 있습니다.
아래의 예시를 참고하시면 도움이 되실겁니다.


TMapPathType.CAR_PATH - 자동차 경로 Type
TMapPathType.PEDESTRIAN_PATH - 보행자 경로 Type


감사합니다.

0 Likes

#5

혹시 Pol검색을 통해 얻어진 point값을 쓰라고 하셨는데 아래의 코드는 sk타워와 제가 임의로 저장한 주소사이를 선으로 그릴려고 임시적으로 작성을 해봤습니다.제 생각대로 했을 때 안되더군요.pol검색하는 코드는 저렇게 하면 안되는건가요? 밑에 address는 주소를 저장한 값 입니다

TMapData tMapData = new TMapData();
tMapData.findAddressPOI(address, new TMapData.FindAddressPOIListenerCallback() {
@Override
public void onFindAddressPOI(ArrayList arrayList) {
for(int i = 0; i < arrayList.size();i++){
TMapPOIItem item = arrayList.get(i);
point = item.getPOIPoint();
//여기 point는 전역변수로 선언했습니다
}
}
});
TMapPoint point2 = new TMapPoint(37.570841, 126.985302);
TMapPolyLine polyLine = new TMapPolyLine();
polyLine.setLineColor(Color.BLUE);
polyLine.setOutLineWidth(3);
polyLine.addLinePoint(point);
polyLine.addLinePoint(point2);

0 Likes

#6

안녕하세요.

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

findAddressPOI()함수 사용시 정상적으로 arrayList를 받아 올 수 있었습니다.
받아온 arrayList는 object값이므로 TMapPOIItem으로 형변환 후 사용하시면 될것 같습니다.
아래의 링크를 참고하시면 도움이 되실겁니다.


http://tmapapi.sktelecom.com/main.html#android/docs/androidDoc.TMapData_findAddressPOI_2


감사합니다.

0 Likes

#7

이번에는 경로 시간을 구할려고 하는데 url통신을 사용하라는 것 같은데 정말 모르겠어서 어느 통신예제를 가져와봤습니다 여기서 코드를 어떻게 바꿔야할까요
HttpURLConnection conn = null;

try {
URL url = new URL(“https://apis.openapi.sk.com/tmap/routes?version={version}&callback={callback}”); //요청 URL을 입력
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod(“POST”); //요청 방식을 설정 (default : GET)

conn.setDoInput(true); //input을 사용하도록 설정 (default : true)
conn.setDoOutput(true); //output을 사용하도록 설정 (default : false)

conn.setConnectTimeout(60); //타임아웃 시간 설정 (default : 무한대기)

OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); //캐릭터셋 설정

writer.write(
    "key1=value1" + 
    + "&key2=value2" + 
    + "&key3=value3"
); //요청 파라미터를 입력
writer.flush();
writer.close();
os.close();

conn.connect();

BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); //캐릭터셋 설정

StringBuilder sb = new StringBuilder();
String line = null;
while ((line = br.readLine()) != null) {
    if(sb.length() > 0) {
        sb.append("\n");
    }
    sb.append(line);
}

System.out.println("response:" + sb.toString());

} catch (Exception e) {
e.printStackTrace();
} finally {
if(conn != null) {
conn.disconnect();
}
}

0 Likes

#8

안녕하세요.

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

POST방식으로 전송할시 key값과 value값을 아래의 링크를 참고하여
작성하여 주시면 될 것 같습니다.


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


감사합니다.

0 Likes

#9

계속 질문을 드려서 죄송합니다 writer.write(
“totalTime”
); //요청 파라미터를 입력
저렇게 작성을 말씀하시는 건가요?

0 Likes

#10

안녕하세요.

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

요청 파라미터를 뜻하는 request parameters 또는 request payload를 참고하여
작성하시면 됩니다.

감사합니다.

0 Likes

#11

요청 피라미터는 time 아닌가요 ?? 토스트로출력시 왜 안될까여

try{
try {
URL url = new URL(“https://apis.openapi.sk.com/tmap/routes?version={version}&callback={callback}”); //요청 URL을 입력
conn = (HttpsURLConnection) url.openConnection();
conn.setRequestMethod(“POST”); //요청 방식을 설정 (default : GET)
conn.setDoInput(true); //input을 사용하도록 설정 (default : true)
conn.setDoOutput(true); //output을 사용하도록 설정 (default : false)

                            conn.setConnectTimeout(60); //타임아웃 시간 설정 (default : 무한대기)

                            OutputStream os = conn.getOutputStream();
                            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); //캐릭터셋 설정

                            writer.write(
                                     "time"
                            ); //요청 파라미터를 입력
                            writer.flush();
                            writer.close();
                            os.close();

                            conn.connect();

                            BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); //캐릭터셋 설정

                            StringBuilder sb = new StringBuilder();
                            String line = null;
                            while ((line = br.readLine()) != null) {
                                if(sb.length() > 0) {
                                    sb.append("\n");
                                }
                                sb.append(line);
                            }
                            Toast.makeText(getApplicationContext(),"걸리는 시간은" + sb.toString() + "입니다",Toast.LENGTH_LONG).show();
                        } catch (Exception e) {
                            e.printStackTrace();
                        } finally {
                            if(conn != null) {
                                conn.disconnect();
                            }
                        }
0 Likes

#12

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

자동차 경로안내 Doc 링크를 보시게 되면, request 파라미터는 출발지 좌표, 목적지 좌표를
필수 파라미터로 입력하셔야 됩니다. 현재 원하시는 값인 "totalTime"은 반환된 값의 이름입니다.
RestAPI요청시 request 파라미터를 입력하시면, XML, JSON으로 리턴 받게 되고 이반환된 데이터 안에
totalTime을 찾아서 쓰시면 됩니다.


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


감사합니다.

0 Likes

#13

String wo = point.toString();//시작지저
String we = point2.toString();점//끝 지점
writer.write(
wo + we
); //요청 파라미터를 입력
writer.flush();
writer.close();
os.close();
저렇게 작성하라는 거 맞나요 ???저렇게 하면 sb변수안에 json값이 들어가는 건가요? 현재 티맵 액티비티에서 디버깅도 안되서 이런 사소한 것도 질문드려 죄송합니다 이런 에러가 뜨는데 해결이 안되네요 * Connected to the target VM, address: ‘localhost:8606’, transport: ‘socket’

0 Likes

#14

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

현재 작성하신 소스코드를 보시게 되면, 주석으로 요청파라미터를 입력이라고
되어있는 부분에 “key1=value” 이런식으로 key값과 value값이 하나의 쌍을 이루고 있습니다.
저번에 링크를 드렸던 자동차 경로안내 Doc와 아래의 자동차 경로안내 Sample을 보시게 되면,
startX : “126.9850380932383”, startY : “37.566567545861645” 이런식으로 Key : value 로 되어있습니다.
자동차 경로안내 호출을 원하시므로 자동차 경로안내의 필수 파라미터를 보게되면 출발지와 목적지
좌표가 필수로 넣어서 아래의 예시와 같이 입력 해야 됩니다.
아래의 예시와 링크를 참고하시면 도움이 되실겁니다.


EX)
writer.write(
“startX=출발지의 X좌표”
+ “&startY=출발지의 Y좌표”
+ “&endX=목적지의 X좌표”
+ “&endY=목적지의 Y좌표”
); //요청 파라미터를 입력

[자동차 경로안내 Sample]
http://tmapapi.sktelecom.com/main.html#webservice/sample/WebSampleRoutes

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


감사합니다.

0 Likes

#15

일반적인 토스트 출력시 출력이 안되는 것 같은데 어떤식으로 작성을 해야 하나요?

이렇게 작성을 하면 json값으로 리턴된다는 거죠 ??
double wo = point.getLatitude();
String sd = “startx=” + wo;
double we = point.getLongitude();
String e = “&starty=” + we;
double q = point2.getLatitude();
String qq = “&endx=” + q;
double r = point2.getLatitude();
String rr = “&endy=” + r;
writer.write(
sd + e + qq + rr
); //요청 파라미터를 입력
writer.flush();
writer.close();
os.close();

0 Likes

#16

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

작성하신 내용으로 보아 어떤 부분이 필요한지 말씀 드리겠습니다.

1.우선 직접 작성하신 url통신 소스코드를 보시면, 요청 파라미터 값은 이미 "key=value"와 같이
문자열 형식으로 되어있습니다. (String + double) 형식으로 되어있지 않습니다.
에러가 발생되었다면 에러가 발생한 곳을 확인하여 주시기 바랍니다.

2.토스트 출력이 안되는것은 API호출이 정삭적으로 이루어 지지 않아서 그런것으로 보입니다.
말씀하신 URL과 파라미터를 가지고 테스트를 진행해본 결과 정상적으로 리턴 받을수 있었습니다.

3.json 형싱으로 리턴 받기 위해선, request 헤더에 "application/json"을 넣어서 response형식을
지정하시면 json 형식으로 리턴 받으실수 있습니다. 하지만, 자동차 경로안내의 경우 default값이 json임으로
지정하지 않으셔도 json 형식으로 리턴 받으실 수 있습니다.
자동차 경로 안내 Doc에 있는 내용입니다. 참고하여 주시기 바랍니다.

이 세가지를 확인하시고 작성하신 소스코드에 적용하시면 정상적으로 될 것입니다.
또한, 위에서 답변드린 링크를 참고하시면 빠르게 해결하실 수 있습니다.

감사합니다

0 Likes

#17

안녕하세요 아직도 해매는 중이지만 이번에는 url주소에 대해서 물어볼려고 왔습니다…ㅠㅠㅠㅠㅠ
디버깅 오류를 해결해서 해봤는데 제가 작성한 코드중에서 BufferedReader부문 주석으로 캐릭터셋 까지 디버깅되다가 건너띄고 catch문으로 들어갔습니다 catch문을 봤을 때 java.io.FileNotFoundException 이런 오류와 함께 옆에 제가 작성한 주소가 적혀있더라구요 그럼 주소 문제인가여 ???제가 디버깅을 한 최종 이유는 sb변수안에 데이터가 들어가있나 볼려고 했습니다

                            BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); //캐릭터셋 설정
                            StringBuilder sb = new StringBuilder();
                            String line;
                            while ((line = br.readLine()) != null) {
                                if(sb.length() > 0) {
                                    sb.append("₩r");
                                }
                                sb.append(line);

                            }
                            Toast.makeText(getApplication(),sb,Toast.LENGTH_LONG).show();


                        } catch (Exception e) {
                            e.printStackTrace();
                        }
0 Likes

#18

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

말씀하신 증상과 내용으로는 정확한 해결방안을 제시해 드리기가 어렵습니다.
또한,Tmap API 서비스에서 제공해 드리는 것 이외에는 답변을
드리기 어려운점 양해 바랍니다.

감사합니다.

0 Likes