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

Tech.Forum

iOS - 여러개 폴리라인을 한번에 그리는 방법 문의드립니다.

#1

길을 안내하는 앱을 만드려고 합니다.

현 위치에서 여러군데의 목적지를 가는 루트를 동시에 보여주려고 하고 있습니다.

for문을 사용해서 여러 path를 그려주고 있는데 path를 가져오는데 실패하는 경우가 있어서요.

제가 사용한 방식에 문제가 있었는지 확인 부탁드려요.

사용한 코드 및 로그를 아래 첨부했습니다.

func drawPaths(start: TMapPoint, end: [TMapPoint]) {

    let pathData = TMapPathData()

    for i in 0...end.count-1 {
        let e = end[i]
        if let polyline = pathData.find(with: PEDESTRIAN_PATH, start: start, end: e) {
            
            let polylineId = "polyline_\(i)"
            mapView.addTMapPolyLineID(polylineId, line: polyline)
            print("\(i) - success")
        } else {
            print("\(i) - fail")
        }
        
    }
    
}

[ 로그 화면 ]
0 - success
1 - success
2 - fail
3 - fail
4 - fail
5 - success
6 - fail
7 - fail
8 - fail
9 - fail
10 - fail
11 - fail
12 - fail
13 - success

0 Likes

#2

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

문의주신 소스를 토대로 임의의 좌표값으로 테스트 했을 때 정상적으로 결과를 얻을 수 있었습니다.

정확히 어떤 좌표값을 가지고 테스트 하셨는지 좌표값과 함께 다시 문의주시면 확인 후 다시 답변드리도록 하겠습니다.

감사합니다.

0 Likes

#3

테스트 좌표를 넣어서 찍은 로그입니다.
프린트 찍은 코드도 다시한번 더 전달 드립니다.

func drawPaths(start: TMapPoint, end: [TMapPoint]) {
    
    let pathData = TMapPathData()
    print("start : ", start.coordinate)
    for i in 0...end.count-1 {
        let e = end[i]
        if let polyline = pathData.find(with: PEDESTRIAN_PATH, start: start, end: e) {
            
            let polylineId = "polyline_\(i)"
            mapView.addTMapPolyLineID(polylineId, line: polyline)
            print("\(i) - success")
        } else {
            print("\(i) - fail")
        }
        print("end: ",e.coordinate)
    }
    
}

start : CLLocationCoordinate2D(latitude: 37.554840087890625, longitude: 126.92597961425781)

0 - fail
end: CLLocationCoordinate2D(latitude: 37.55426788330078, longitude: 126.92597198486328)

1 - fail
end: CLLocationCoordinate2D(latitude: 37.554290771484375, longitude: 126.92569732666016)

2 - success
end: CLLocationCoordinate2D(latitude: 37.55429458618164, longitude: 126.92554473876953)

3 - fail
end: CLLocationCoordinate2D(latitude: 37.554298400878906, longitude: 126.92549896240234)

4 - fail
end: CLLocationCoordinate2D(latitude: 37.554298400878906, longitude: 126.9254150390625)

5 - fail
end: CLLocationCoordinate2D(latitude: 37.55426788330078, longitude: 126.92516326904297)

6 - fail
end: CLLocationCoordinate2D(latitude: 37.554229736328125, longitude: 126.92497253417969)

7 - fail
end: CLLocationCoordinate2D(latitude: 37.55415725708008, longitude: 126.92479705810547)

8 - fail
end: CLLocationCoordinate2D(latitude: 37.553890228271484, longitude: 126.924072265625)

9 - fail
end: CLLocationCoordinate2D(latitude: 37.55421829223633, longitude: 126.92369842529297)

10 - success
end: CLLocationCoordinate2D(latitude: 37.55424118041992, longitude: 126.92366027832031)

11 - fail
end: CLLocationCoordinate2D(latitude: 37.55421829223633, longitude: 126.92369842529297)

12 - fail
end: CLLocationCoordinate2D(latitude: 37.553890228271484, longitude: 126.924072265625)

13 - fail
end: CLLocationCoordinate2D(latitude: 37.55376052856445, longitude: 126.9242172241211)

14 - fail
end: CLLocationCoordinate2D(latitude: 37.553531646728516, longitude: 126.92447662353516)

15 - fail
end: CLLocationCoordinate2D(latitude: 37.553138732910156, longitude: 126.92472076416016)

16 - fail
end: CLLocationCoordinate2D(latitude: 37.55316162109375, longitude: 126.92476654052734)

17 - success
end: CLLocationCoordinate2D(latitude: 37.55319595336914, longitude: 126.92486572265625)

18 - fail
end: CLLocationCoordinate2D(latitude: 37.55322265625, longitude: 126.92493438720703)

19 - fail
end: CLLocationCoordinate2D(latitude: 37.55323791503906, longitude: 126.92498779296875)

20 - fail
end: CLLocationCoordinate2D(latitude: 37.553245544433594, longitude: 126.9250259399414)

21 - fail
end: CLLocationCoordinate2D(latitude: 37.55333709716797, longitude: 126.92525482177734)

22 - fail
end: CLLocationCoordinate2D(latitude: 37.55337905883789, longitude: 126.92546844482422)

23 - fail
end: CLLocationCoordinate2D(latitude: 37.5533561706543, longitude: 126.92591857910156)

24 - success
end: CLLocationCoordinate2D(latitude: 37.5533561706543, longitude: 126.92593383789062)

25 - fail
end: CLLocationCoordinate2D(latitude: 37.553550720214844, longitude: 126.92594146728516)

26 - fail
end: CLLocationCoordinate2D(latitude: 37.553794860839844, longitude: 126.92594909667969)

27 - fail
end: CLLocationCoordinate2D(latitude: 37.55374526977539, longitude: 126.9264144897461)

28 - fail
end: CLLocationCoordinate2D(latitude: 37.553749084472656, longitude: 126.92648315429688)

29 - fail
end: CLLocationCoordinate2D(latitude: 37.55400085449219, longitude: 126.92757415771484)

30 - fail
end: CLLocationCoordinate2D(latitude: 37.55400848388672, longitude: 126.9276123046875)

31 - success
end: CLLocationCoordinate2D(latitude: 37.55400085449219, longitude: 126.92757415771484)

32 - fail
end: CLLocationCoordinate2D(latitude: 37.55426025390625, longitude: 126.92779541015625)

33 - fail
end: CLLocationCoordinate2D(latitude: 37.5545539855957, longitude: 126.92804718017578)

34 - fail
end: CLLocationCoordinate2D(latitude: 37.554603576660156, longitude: 126.92808532714844)

35 - fail
end: CLLocationCoordinate2D(latitude: 37.554786682128906, longitude: 126.9282455444336)

36 - fail
end: CLLocationCoordinate2D(latitude: 37.55511474609375, longitude: 126.92852783203125)

37 - fail
end: CLLocationCoordinate2D(latitude: 37.55522918701172, longitude: 126.9283218383789)

38 - success
end: CLLocationCoordinate2D(latitude: 37.55540466308594, longitude: 126.9280014038086)

39 - fail
end: CLLocationCoordinate2D(latitude: 37.55548095703125, longitude: 126.92786407470703)

40 - fail
end: CLLocationCoordinate2D(latitude: 37.55569076538086, longitude: 126.92747497558594)

41 - fail
end: CLLocationCoordinate2D(latitude: 37.555728912353516, longitude: 126.92741394042969)

0 Likes

#4

지난 질문들을 찾아보다가 17년 12월 질문인 아래 링크를 확인하였습니다.

아래 링크속 답변에

“API 무료 이용고객이시라면, 초당요청 횟수 제한이 있어서 그 제항니 넘을때 값이 제대로 떨어지지 않는 것 같습니다.”

라는 답변을 보았습니다. 혹시 저도 이에 해당하는 케이스일까요?

0 Likes

#5

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

보내주신 좌표로 테스트 해본 결과 아래와 같이 정상적으로 폴리라인이 그려지고 있습니다.

아래 로그는 위 이미지가 실행되어 찍힌 로그입니다. ------------------------------- start : CLLocationCoordinate2D(latitude: 37.554840087890625, longitude: 126.92597961425781) 0 - success end: CLLocationCoordinate2D(latitude: 37.55426788330078, longitude: 126.92597198486328) 1 - success end: CLLocationCoordinate2D(latitude: 37.554290771484375, longitude: 126.92569732666016) 2 - success end: CLLocationCoordinate2D(latitude: 37.55429458618164, longitude: 126.92554473876953) 3 - success end: CLLocationCoordinate2D(latitude: 37.554298400878906, longitude: 126.92549896240234) 4 - success end: CLLocationCoordinate2D(latitude: 37.554298400878906, longitude: 126.9254150390625) 5 - success end: CLLocationCoordinate2D(latitude: 37.55426788330078, longitude: 126.92516326904297) ------------------------------- TMapPoint를 담고 있는 배열이 정확히 어떤 식으로 생성되어 있고, 사용되고 있는지 알려주시면 확인 후 다시 답변드리도록 하겠습니다.

추가적으로 TMapPoint 배열에 대한 문제가 아닐경우 TMap API 무료이용 고객이시라면 appKey를 발급받은 프로젝트명을 알려주시면 초당요청 횟수 제한을 초과했는지 여부를 확인 후 답변드리도록 하겠습니다.

감사합니다.

0 Likes

#6

< 배열을 생성하는 방식 >


테스트를 진행한 방식으로 설명드립니다.
시작과 끝점으로 폴리라인을 그린 다음, 그 폴리라인에서 TMapPolyLine.getPoint() 매소드를 사용해서 포인트를 뽑아내고 있습니다. 뽑아진 점들을 연결하는 polyline을 다시 그리도록 테스트 해보고 있습니다.
실 사용시에는 여러 데이터를 서버에서 가져와서 한번에 그릴 예정입니다.




< 등록한 프로젝트 명 >


프로젝트명은 SafeWayHome 입니다.
무료 사용이기에 초당 사용 횟수를 초과하게된 이슈라면, 유료 사용시 금액에 따라 몇회까지 가능한지 가격표를 확인할 수 있도록 안내 부탁드립니다.






길어지는 질문에 친절히 답변주셔서 감사합니다.

0 Likes

#7

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

보내주신 프로젝트명으로 사용하시는 appKey를 조회하여 로그를 확인해본 결과

12월 4일 기준으로 약 75건의 에러가 발생했던 것을 확인할 수 있었습니다.

출발지와 도착지가 거의 동일한 지점인 것이 원인으로 파악됩니다.

API 요청 전 출발지와 도착지의 좌표를 다시 한번 확인하신 후 사용하시면 될 것 같습니다.

감사합니다.

0 Likes

#8

말씀해주신데로, 가까운 거리를 제거하고, 최소 한블럭 이상의 거리로 테스트해보았습니다.
테스트 결과과 이전과 같은 상황이 벌어지는 케이스가 있는 것으로 보아, 말씀해주신 이슈 외에도 다른 이슈도 있는 듯 하여 한번 더 질문 드립니다.


테스트 진행방식에 대해서 설명드립니다. (테스트 날짜: 2018.12.07.11:03:09)
[ 1단계 }
테스트할 포인트를 얻기 위해서 티맵을 활용해 20개의 점을 찍어가며 각각 사이의 polyline을 그렸습니다. 이 과정에서는 20개의 점 사이사이 polyline들이 모두 얻어져서 그리는데 성공하였습니다.


[ 2단계 ]
이후, for 문을 사용해 20개 점의 사이사이 경로들을 아래 코드와 같이 진행하여 그렸습니다. 이 과정에서는 로그에서 확인할 수 있듯이 중간중간 실패하는 경우가 있었습니다.


두 단계의 진행을 비교해보면, [ 1단계 ]에서는 폴리라인을 얻는데 성공하였고, [ 2단계 ]에서는 폴리라인을 얻는데 실패함을 확인했습니다. 이번 케이스는 두점 사이의 거리가 가깝기 때문은 아닌 것으로 생각됩니다. 이 부분 확인 부탁드립니다.


한주간 내내 귀찮게 해드리네요.
그럼에도 성실한 답변 감사드립니다.




[ 사용한 매소드 ]

    let routeCoords = route.routeCoords.sorted { $0.displayOrder < $1.displayOrder }
    for i in 0...routeCoords.count-2 {
        let start = routeCoords[i]
        let end = routeCoords[i+1]
        let sLat = CLLocationDegrees(start.latitude)
        let sLon = CLLocationDegrees(start.longitude)
        let eLat = CLLocationDegrees(end.latitude)
        let eLon = CLLocationDegrees(end.longitude)
        
        let sCoord = CLLocationCoordinate2D.init(latitude: sLat, longitude: sLon)
        let eCoord = CLLocationCoordinate2D.init(latitude: eLat, longitude: eLon)
        
        if let sPoint = TMapPoint.init(coordinate: sCoord),
            let ePoint = TMapPoint.init(coordinate: eCoord) {
            
            
            if let polyline = getPolyline(start: sPoint, end: ePoint) {
                
                self.polylines.append(polyline)
                
                
                // 폴리라인 추가
                let polylineID = "polyline\(self.polylines.count-1)"
                mapView.addTMapPolyLineID(polylineID, line: polyline)
                print("<Success - \(i)>")
                print("- start: ", sPoint.coordinate)
                print("- end: ", ePoint.coordinate)
                
            } else {
                
                print("<Fail - \(i)>")
                print("- start: ", sPoint.coordinate)
                print("- end: ", ePoint.coordinate)
            }
        } else {
            
        }
    }

[ 로그 ]
<Success - 0>

  • start: CLLocationCoordinate2D(latitude: 37.572845458984375, longitude: 126.93199157714844)
  • end: CLLocationCoordinate2D(latitude: 37.572208404541016, longitude: 126.93321990966797)
    <Success - 1>
  • start: CLLocationCoordinate2D(latitude: 37.572208404541016, longitude: 126.93321990966797)
  • end: CLLocationCoordinate2D(latitude: 37.572296142578125, longitude: 126.9343032836914)
    <Fail - 2>
  • start: CLLocationCoordinate2D(latitude: 37.572296142578125, longitude: 126.9343032836914)
  • end: CLLocationCoordinate2D(latitude: 37.57094955444336, longitude: 126.93408203125)
    <Fail - 3>
  • start: CLLocationCoordinate2D(latitude: 37.57094955444336, longitude: 126.93408203125)
  • end: CLLocationCoordinate2D(latitude: 37.57027816772461, longitude: 126.93263244628906)
    <Fail - 4>
  • start: CLLocationCoordinate2D(latitude: 37.57027816772461, longitude: 126.93263244628906)
  • end: CLLocationCoordinate2D(latitude: 37.5703239440918, longitude: 126.9310073852539)
    <Fail - 5>
  • start: CLLocationCoordinate2D(latitude: 37.5703239440918, longitude: 126.9310073852539)
  • end: CLLocationCoordinate2D(latitude: 37.5714111328125, longitude: 126.92984008789062)
    <Fail - 6>
  • start: CLLocationCoordinate2D(latitude: 37.5714111328125, longitude: 126.92984008789062)
  • end: CLLocationCoordinate2D(latitude: 37.57113265991211, longitude: 126.92922973632812)
    <Success - 7>
  • start: CLLocationCoordinate2D(latitude: 37.57113265991211, longitude: 126.92922973632812)
  • end: CLLocationCoordinate2D(latitude: 37.570594787597656, longitude: 126.92854309082031)
    <Fail - 8>
  • start: CLLocationCoordinate2D(latitude: 37.570594787597656, longitude: 126.92854309082031)
  • end: CLLocationCoordinate2D(latitude: 37.569854736328125, longitude: 126.9287338256836)
    <Fail - 9>
  • start: CLLocationCoordinate2D(latitude: 37.569854736328125, longitude: 126.9287338256836)
  • end: CLLocationCoordinate2D(latitude: 37.56875228881836, longitude: 126.92959594726562)
    <Fail - 10>
  • start: CLLocationCoordinate2D(latitude: 37.56875228881836, longitude: 126.92959594726562)
  • end: CLLocationCoordinate2D(latitude: 37.56782150268555, longitude: 126.92939758300781)
    <Fail - 11>
  • start: CLLocationCoordinate2D(latitude: 37.56782150268555, longitude: 126.92939758300781)
  • end: CLLocationCoordinate2D(latitude: 37.56707763671875, longitude: 126.92903900146484)
    <Fail - 12>
  • start: CLLocationCoordinate2D(latitude: 37.56707763671875, longitude: 126.92903900146484)
  • end: CLLocationCoordinate2D(latitude: 37.56686019897461, longitude: 126.92988586425781)
    <Success - 13>
  • start: CLLocationCoordinate2D(latitude: 37.56686019897461, longitude: 126.92988586425781)
  • end: CLLocationCoordinate2D(latitude: 37.56600570678711, longitude: 126.930419921875)
    <Fail - 14>
  • start: CLLocationCoordinate2D(latitude: 37.56600570678711, longitude: 126.930419921875)
  • end: CLLocationCoordinate2D(latitude: 37.56532287597656, longitude: 126.930908203125)
    <Fail - 15>
  • start: CLLocationCoordinate2D(latitude: 37.56532287597656, longitude: 126.930908203125)
  • end: CLLocationCoordinate2D(latitude: 37.565711975097656, longitude: 126.93171691894531)
    <Fail - 16>
  • start: CLLocationCoordinate2D(latitude: 37.565711975097656, longitude: 126.93171691894531)
  • end: CLLocationCoordinate2D(latitude: 37.56658172607422, longitude: 126.93214416503906)
    <Fail - 17>
  • start: CLLocationCoordinate2D(latitude: 37.56658172607422, longitude: 126.93214416503906)
  • end: CLLocationCoordinate2D(latitude: 37.567264556884766, longitude: 126.93257141113281)
    <Fail - 18>
  • start: CLLocationCoordinate2D(latitude: 37.567264556884766, longitude: 126.93257141113281)
  • end: CLLocationCoordinate2D(latitude: 37.567420959472656, longitude: 126.93334197998047)
    <Fail - 19>
  • start: CLLocationCoordinate2D(latitude: 37.567420959472656, longitude: 126.93334197998047)
  • end: CLLocationCoordinate2D(latitude: 37.56830978393555, longitude: 126.93319702148438)
    <Success - 20>
  • start: CLLocationCoordinate2D(latitude: 37.56830978393555, longitude: 126.93319702148438)
  • end: CLLocationCoordinate2D(latitude: 37.56870651245117, longitude: 126.93345642089844)
0 Likes

#9

안녕하세요.
개발자센터 입니다.

2단계의 로그라고 보내주신 내용에는 Fail 이라는 문장이 보이지 않습니다. 서버를 확인해본 결과

2018-12-07 00시 ~ 14시 기준으로 17건의 에러로그가 있었습니다.

모두 출발지와 도착지가 근접한다는 오류였습니다. 아래는 금일 요청하신 실패요청 중 하나의 좌표 입니다. -------------------------------------- 출발지 37.57198472446808 126.9324519719045

도착지 37.57198472446808 126.9324519719045 --------------------------------------

출발지와 도착지를 넣기전에 두개의 좌표가 같거나 근접해 있는지 체크하는 로직을 넣으시면 문제를 해결하시는데 도움이 될 것 같습니다.

감사합니다.

0 Likes

#11

흠… 다시한번 더 확인 부탁드립니다.


아래 코드처럼 for문에 1초 딜레이를 주었습니다.
그 결과, 모든 polyline을 가져오는데에 성공했습니다.
아래 1초 딜레이를 시킨 로그와, 시키지 않은 로그 모두 보내드립니다.


말씀해주신데로 두점 사이의 거리가 너무 가까워서 생기는 이슈라면, 딜레이를 걸어도 실패가 떠야하지 않나 싶어서요. 현재 저의 이슈는 두점 사이의 거리가 가까워서가 아닌지 않을까 싶어서요.


제 의견으로는 아래 링크속 질문에서 답변주셨던 것처럼 TMapPathData.find(with: PEDESTRIAN_PATH, start: start, end: end)매소드가 무료사용의 경우 초당 사용 횟수에 제한이 있는 것이 아닌가 싶어서요.


확인 부탁드립니다.






     for i in 0...routeCoords.count-2 {
        usleep(1000000) // <----- 1초 딜레이
        let start = routeCoords[i]
        let end = routeCoords[i+1]
        let sLat = CLLocationDegrees(start.latitude)
        let sLon = CLLocationDegrees(start.longitude)
        let eLat = CLLocationDegrees(end.latitude)
        let eLon = CLLocationDegrees(end.longitude)
        
        let sCoord = CLLocationCoordinate2D.init(latitude: sLat, longitude: sLon)
        let eCoord = CLLocationCoordinate2D.init(latitude: eLat, longitude: eLon)
        let sLocation = CLLocation.init(latitude: sCoord.latitude, longitude: sCoord.longitude)
        let eLocation = CLLocation.init(latitude: eCoord.latitude, longitude: eCoord.longitude)
        
        if let sPoint = TMapPoint.init(coordinate: sCoord),
            let ePoint = TMapPoint.init(coordinate: eCoord) {
            
            
            if let polyline = getPolyline(start: sPoint, end: ePoint) {
                
                self.polylines.append(polyline)
                
                
                // 폴리라인 추가
                let polylineID = "polyline\(self.polylines.count-1)"
                mapView.addTMapPolyLineID(polylineID, line: polyline)
                print("")
                print("[Success - \(i)] :: distance: \(sLocation.distance(from: eLocation))")
                print("- start: ", sPoint.coordinate)
                print("- end  : ", ePoint.coordinate)
                
            } else {

                
                print("")
                print("[Fail - \(i)] :: distance: \(sLocation.distance(from: eLocation))")
                print("- start: ", sPoint.coordinate)
                print("- end  : ", ePoint.coordinate)
            }
        } else {

        }
    }

fileprivate func getPolyline(start: TMapPoint, end: TMapPoint) -> TMapPolyLine? {
    
    var returnPolyline: TMapPolyLine?
    if let polyline = self.tmapData.find(with: PEDESTRIAN_PATH, start: start, end: end) {
        
        polyline.setLineColor(UIColor.trueGreen.cgColor)
        polyline.setLineWidth(2)
        polyline.setLineDashPattern([4, 6])
        
        returnPolyline = polyline
    }
    
    return returnPolyline
}

< for 문에 1초 딜레이를 준 로그 >
[Success - 0] :: distance: 129.5139504136826

  • start: CLLocationCoordinate2D(latitude: 37.572845458984375, longitude: 126.93199157714844)
  • end : CLLocationCoordinate2D(latitude: 37.572208404541016, longitude: 126.93321990966797)


    [Success - 1] :: distance: 96.19923176573529
  • start: CLLocationCoordinate2D(latitude: 37.572208404541016, longitude: 126.93321990966797)
  • end : CLLocationCoordinate2D(latitude: 37.572296142578125, longitude: 126.9343032836914)


    [Success - 2] :: distance: 150.72829635690562
  • start: CLLocationCoordinate2D(latitude: 37.572296142578125, longitude: 126.9343032836914)
  • end : CLLocationCoordinate2D(latitude: 37.57094955444336, longitude: 126.93408203125)


    [Success - 3] :: distance: 148.15877814786748
  • start: CLLocationCoordinate2D(latitude: 37.57094955444336, longitude: 126.93408203125)
  • end : CLLocationCoordinate2D(latitude: 37.57027816772461, longitude: 126.93263244628906)


    [Success - 4] :: distance: 143.64752042742808
  • start: CLLocationCoordinate2D(latitude: 37.57027816772461, longitude: 126.93263244628906)
  • end : CLLocationCoordinate2D(latitude: 37.5703239440918, longitude: 126.9310073852539)


    [Success - 5] :: distance: 158.7250008481365
  • start: CLLocationCoordinate2D(latitude: 37.5703239440918, longitude: 126.9310073852539)
  • end : CLLocationCoordinate2D(latitude: 37.5714111328125, longitude: 126.92984008789062)


    [Success - 6] :: distance: 62.14860297586063
  • start: CLLocationCoordinate2D(latitude: 37.5714111328125, longitude: 126.92984008789062)
  • end : CLLocationCoordinate2D(latitude: 37.57113265991211, longitude: 126.92922973632812)


    [Success - 7] :: distance: 85.1070765763067
  • start: CLLocationCoordinate2D(latitude: 37.57113265991211, longitude: 126.92922973632812)
  • end : CLLocationCoordinate2D(latitude: 37.570594787597656, longitude: 126.92854309082031)


    [Success - 8] :: distance: 83.84753965617041
  • start: CLLocationCoordinate2D(latitude: 37.570594787597656, longitude: 126.92854309082031)
  • end : CLLocationCoordinate2D(latitude: 37.569854736328125, longitude: 126.9287338256836)


    [Success - 9] :: distance: 144.12493162877826
  • start: CLLocationCoordinate2D(latitude: 37.569854736328125, longitude: 126.9287338256836)
  • end : CLLocationCoordinate2D(latitude: 37.56875228881836, longitude: 126.92959594726562)


    [Success - 10] :: distance: 104.78214542895923
  • start: CLLocationCoordinate2D(latitude: 37.56875228881836, longitude: 126.92959594726562)
  • end : CLLocationCoordinate2D(latitude: 37.56782150268555, longitude: 126.92939758300781)


    [Success - 11] :: distance: 88.42889954828922
  • start: CLLocationCoordinate2D(latitude: 37.56782150268555, longitude: 126.92939758300781)
  • end : CLLocationCoordinate2D(latitude: 37.56707763671875, longitude: 126.92903900146484)


    [Success - 12] :: distance: 78.61317100548926
  • start: CLLocationCoordinate2D(latitude: 37.56707763671875, longitude: 126.92903900146484)
  • end : CLLocationCoordinate2D(latitude: 37.56686019897461, longitude: 126.92988586425781)


    [Success - 13] :: distance: 105.92693066304547
  • start: CLLocationCoordinate2D(latitude: 37.56686019897461, longitude: 126.92988586425781)
  • end : CLLocationCoordinate2D(latitude: 37.56600570678711, longitude: 126.930419921875)


    [Success - 14] :: distance: 87.20338728342271
  • start: CLLocationCoordinate2D(latitude: 37.56600570678711, longitude: 126.930419921875)
  • end : CLLocationCoordinate2D(latitude: 37.56532287597656, longitude: 126.930908203125)


    [Success - 15] :: distance: 83.48459151590589
  • start: CLLocationCoordinate2D(latitude: 37.56532287597656, longitude: 126.930908203125)
  • end : CLLocationCoordinate2D(latitude: 37.565711975097656, longitude: 126.93171691894531)


    [Success - 16] :: distance: 103.64939356252404
  • start: CLLocationCoordinate2D(latitude: 37.565711975097656, longitude: 126.93171691894531)
  • end : CLLocationCoordinate2D(latitude: 37.56658172607422, longitude: 126.93214416503906)


    [Success - 17] :: distance: 84.66573949749777
  • start: CLLocationCoordinate2D(latitude: 37.56658172607422, longitude: 126.93214416503906)
  • end : CLLocationCoordinate2D(latitude: 37.567264556884766, longitude: 126.93257141113281)


    [Success - 18] :: distance: 70.2552979848995
  • start: CLLocationCoordinate2D(latitude: 37.567264556884766, longitude: 126.93257141113281)
  • end : CLLocationCoordinate2D(latitude: 37.567420959472656, longitude: 126.93334197998047)


    [Success - 19] :: distance: 99.47691146446942
  • start: CLLocationCoordinate2D(latitude: 37.567420959472656, longitude: 126.93334197998047)
  • end : CLLocationCoordinate2D(latitude: 37.56830978393555, longitude: 126.93319702148438)


    [Success - 20] :: distance: 49.63895537623091
  • start: CLLocationCoordinate2D(latitude: 37.56830978393555, longitude: 126.93319702148438)
  • end : CLLocationCoordinate2D(latitude: 37.56870651245117, longitude: 126.93345642089844)










    [1초 딜레이를 빼고 실행한 로그]


    [Success - 0] :: distance: 129.5139504136826
  • start: CLLocationCoordinate2D(latitude: 37.572845458984375, longitude: 126.93199157714844)
  • end : CLLocationCoordinate2D(latitude: 37.572208404541016, longitude: 126.93321990966797)


    [Success - 1] :: distance: 96.19923176573529
  • start: CLLocationCoordinate2D(latitude: 37.572208404541016, longitude: 126.93321990966797)
  • end : CLLocationCoordinate2D(latitude: 37.572296142578125, longitude: 126.9343032836914)


    [Fail - 2] :: distance: 150.72829635690562
  • start: CLLocationCoordinate2D(latitude: 37.572296142578125, longitude: 126.9343032836914)
  • end : CLLocationCoordinate2D(latitude: 37.57094955444336, longitude: 126.93408203125)


    [Fail - 3] :: distance: 148.15877814786748
  • start: CLLocationCoordinate2D(latitude: 37.57094955444336, longitude: 126.93408203125)
  • end : CLLocationCoordinate2D(latitude: 37.57027816772461, longitude: 126.93263244628906)


    [Fail - 4] :: distance: 143.64752042742808
  • start: CLLocationCoordinate2D(latitude: 37.57027816772461, longitude: 126.93263244628906)
  • end : CLLocationCoordinate2D(latitude: 37.5703239440918, longitude: 126.9310073852539)


    [Success - 5] :: distance: 158.7250008481365
  • start: CLLocationCoordinate2D(latitude: 37.5703239440918, longitude: 126.9310073852539)
  • end : CLLocationCoordinate2D(latitude: 37.5714111328125, longitude: 126.92984008789062)


    [Fail - 6] :: distance: 62.14860297586063
  • start: CLLocationCoordinate2D(latitude: 37.5714111328125, longitude: 126.92984008789062)
  • end : CLLocationCoordinate2D(latitude: 37.57113265991211, longitude: 126.92922973632812)


    [Fail - 7] :: distance: 85.1070765763067
  • start: CLLocationCoordinate2D(latitude: 37.57113265991211, longitude: 126.92922973632812)
  • end : CLLocationCoordinate2D(latitude: 37.570594787597656, longitude: 126.92854309082031)


    [Fail - 8] :: distance: 83.84753965617041
  • start: CLLocationCoordinate2D(latitude: 37.570594787597656, longitude: 126.92854309082031)
  • end : CLLocationCoordinate2D(latitude: 37.569854736328125, longitude: 126.9287338256836)


    [Fail - 9] :: distance: 144.12493162877826
  • start: CLLocationCoordinate2D(latitude: 37.569854736328125, longitude: 126.9287338256836)
  • end : CLLocationCoordinate2D(latitude: 37.56875228881836, longitude: 126.92959594726562)


    [Fail - 10] :: distance: 104.78214542895923
  • start: CLLocationCoordinate2D(latitude: 37.56875228881836, longitude: 126.92959594726562)
  • end : CLLocationCoordinate2D(latitude: 37.56782150268555, longitude: 126.92939758300781)


    [Success - 11] :: distance: 88.42889954828922
  • start: CLLocationCoordinate2D(latitude: 37.56782150268555, longitude: 126.92939758300781)
  • end : CLLocationCoordinate2D(latitude: 37.56707763671875, longitude: 126.92903900146484)


    [Fail - 12] :: distance: 78.61317100548926
  • start: CLLocationCoordinate2D(latitude: 37.56707763671875, longitude: 126.92903900146484)
  • end : CLLocationCoordinate2D(latitude: 37.56686019897461, longitude: 126.92988586425781)


    [Fail - 13] :: distance: 105.92693066304547
  • start: CLLocationCoordinate2D(latitude: 37.56686019897461, longitude: 126.92988586425781)
  • end : CLLocationCoordinate2D(latitude: 37.56600570678711, longitude: 126.930419921875)


    [Fail - 14] :: distance: 87.20338728342271
  • start: CLLocationCoordinate2D(latitude: 37.56600570678711, longitude: 126.930419921875)
  • end : CLLocationCoordinate2D(latitude: 37.56532287597656, longitude: 126.930908203125)


    [Fail - 15] :: distance: 83.48459151590589
  • start: CLLocationCoordinate2D(latitude: 37.56532287597656, longitude: 126.930908203125)
  • end : CLLocationCoordinate2D(latitude: 37.565711975097656, longitude: 126.93171691894531)


    [Success - 16] :: distance: 103.64939356252404
  • start: CLLocationCoordinate2D(latitude: 37.565711975097656, longitude: 126.93171691894531)
  • end : CLLocationCoordinate2D(latitude: 37.56658172607422, longitude: 126.93214416503906)


    [Fail - 17] :: distance: 84.66573949749777
  • start: CLLocationCoordinate2D(latitude: 37.56658172607422, longitude: 126.93214416503906)
  • end : CLLocationCoordinate2D(latitude: 37.567264556884766, longitude: 126.93257141113281)


    [Fail - 18] :: distance: 70.2552979848995
  • start: CLLocationCoordinate2D(latitude: 37.567264556884766, longitude: 126.93257141113281)
  • end : CLLocationCoordinate2D(latitude: 37.567420959472656, longitude: 126.93334197998047)


    [Fail - 19] :: distance: 99.47691146446942
  • start: CLLocationCoordinate2D(latitude: 37.567420959472656, longitude: 126.93334197998047)
  • end : CLLocationCoordinate2D(latitude: 37.56830978393555, longitude: 126.93319702148438)


    [Fail - 20] :: distance: 49.63895537623091
  • start: CLLocationCoordinate2D(latitude: 37.56830978393555, longitude: 126.93319702148438)
  • end : CLLocationCoordinate2D(latitude: 37.56870651245117, longitude: 126.93345642089844)
0 Likes

#12

안녕하세요.
개발자센터 입니다.

경로안내 API 를 요청하실 때 무료 사용자인 경우 초당 2건으로 요청이 제한되며, 정액제 사용자의 경우 제한이 없습니다.

감사합니다.

0 Likes

#13

답변 감사합니다.


너무 가까운 거리의 경우에도 실패한다고 말씀해주신 부분 관련하여 몇가지 추가질문 드립니다.

  1. 폴리라인을 얻을 수 있는 최소 거리가 어떻게 될까요?
  2. 최소거리를 확인하기 위해서 시작점과 끝점의 거리를 CLLocation.distance(from:)메소드를 사용하면 될까요?
  3. 폴리라인을 얻는데 실패한 경우, 실패한 api도 과금이 되나요?


    확인 부탁드립니다.
0 Likes

#14

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

1. 출발지와 도착지의 좌표가 동일하지 않는이상 매우 근접한 거리에도 정상적인 결과를 얻습니다. 다만 결과를 라인으로 그렸을 때, 점에 가까운 라인이 그려지는 것을 확인하실 수 있습니다.

두 좌표가 동일할 때는 체크하여 알려주는 로직을 추가하시면 문제를 해결하는데에 도움이 되실 겁니다.

2. 시작점과 끝점의 거리는 (double) getDistance 함수를 사용하시면 됩니다. 자세한 내용은 아래 링크를 참고하시면 도움이 되실 겁니다. ---------------------------------------- < (double) getDistance > http://tmapapi.sktelecom.com/main.html#ios/docs/iosDoc.TMapPolyLine_getDistance ----------------------------------------

유료 이용고객이신 경우
API 사용 시 요청이 실패한 경우는
요청 횟수가 Count 되지 않습니다.

감사합니다.

0 Likes