-1

A, B 및 C의 3 개 목록을 가지고 있다고 가정 해 봅시다. 한 곳에서 각 위치 간 최단 거리를 찾으려고합니다.iOS에서 Google지도를 사용하여 여러 목적지에 대해 단일 경로를 표시하는 방법

A는 내가 100 개 다른 위치이 필요

을 A와 B C에 C C에 B에 C B에 를 B, 그리고 내가 얻을 수있는 가장 좋은 방법을 찾기 위해 노력하고 있어요 이 정보. 이 문제를 해결해야한다면 A to B A ~ C

그리고 B to A, B to C 및 C to A, C to B에 대해서는 별도로 찾아야합니다.

+1

지도 API가이 문제에 대한 서비스를 제공하는지는 잘 모르지만 정보 기술의 매우 잘 알려진 문제입니다. 그 여행 세일즈맨 문제라고. NP 에서처럼 어려운 문제. 그것에 더 많은 것을 읽으십시오. 최소한 당신이 최단 경로를 찾고 싶다는 것을 이해한다면. – Blackbam

+0

질문을 명확히하고 자신이 시도한 것을 보여줄 필요가 있습니다. 예 : 어떤 문제를 해결하려고합니까? 나는 가장 짧은 경로 (Dijkstra를 조회한다면)를 추측한다. @Blackbam은 TSP로 갔다. 아니면 Google API 질문 일 수도 있습니다. – CRD

답변

1

당신이 찾고있는 옷장은 거리 매트릭스 API라고 생각합니다. 여기에 문서를 참조하십시오 :이 확실히 정확하게 당신이 찾고있는 아니라고

https://developers.google.com/maps/documentation/distance-matrix/start

참고하지만, 구글이 제공하는 가장 가까운 것입니다. 예를 들어 요청을 참조하십시오 : 이것은 모든 목적지에 대한 모든 근원에서 당신에게 거리를 줄 것이다

https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=Washington,DC|Houston,TX|New+York+City,NY&destinations=Washington,DC|Houston,TX|New+York+City,NY&key=MY_API_KEY

. 귀하의 유스 케이스와 함께 작동하려면 위의 예에서와 같이 원래와 목적지가 동일해야합니다. 내 예에서 API는 다음 반환

{ 
"destination_addresses" : [ "Washington, DC, USA", "Houston, TX, USA", "New York, NY, USA" ], 
"origin_addresses" : [ "Washington, DC, USA", "Houston, TX, USA", "New York, NY, USA" ], 
"rows" : [ 
    { 
    "elements" : [ 
     { 
      "distance" : { 
       "text" : "1 ft", 
       "value" : 0 
      }, 
      "duration" : { 
       "text" : "1 min", 
       "value" : 0 
      }, 
      "status" : "OK" 
     }, 
     { 
      "distance" : { 
       "text" : "1,408 mi", 
       "value" : 2266226 
      }, 
      "duration" : { 
       "text" : "20 hours 22 mins", 
       "value" : 73331 
      }, 
      "status" : "OK" 
     }, 
     { 
      "distance" : { 
       "text" : "225 mi", 
       "value" : 361722 
      }, 
      "duration" : { 
       "text" : "3 hours 48 mins", 
       "value" : 13672 
      }, 
      "status" : "OK" 
     } 
    ] 
    }, 
    { 
    "elements" : [ 
     { 
      "distance" : { 
       "text" : "1,409 mi", 
       "value" : 2266981 
      }, 
      "duration" : { 
       "text" : "20 hours 28 mins", 
       "value" : 73678 
      }, 
      "status" : "OK" 
     }, 
     { 
      "distance" : { 
       "text" : "1 ft", 
       "value" : 0 
      }, 
      "duration" : { 
       "text" : "1 min", 
       "value" : 0 
      }, 
      "status" : "OK" 
     }, 
     { 
      "distance" : { 
       "text" : "1,628 mi", 
       "value" : 2620605 
      }, 
      "duration" : { 
       "text" : "23 hours 44 mins", 
       "value" : 85438 
      }, 
      "status" : "OK" 
     } 
    ] 
    }, 
    { 
    "elements" : [ 
     { 
      "distance" : { 
       "text" : "226 mi", 
       "value" : 364085 
      }, 
      "duration" : { 
       "text" : "3 hours 53 mins", 
       "value" : 13965 
      }, 
      "status" : "OK" 
     }, 
     { 
      "distance" : { 
       "text" : "1,627 mi", 
       "value" : 2618345 
      }, 
      "duration" : { 
       "text" : "23 hours 43 mins", 
       "value" : 85385 
      }, 
      "status" : "OK" 
     }, 
     { 
      "distance" : { 
       "text" : "1 ft", 
       "value" : 0 
      }, 
      "duration" : { 
       "text" : "1 min", 
       "value" : 0 
      }, 
      "status" : "OK" 
     } 
    ] 
    } 
], 
"status" : "OK" 
} 

당신은 세 가지 위치에 모든 네게 위치에서의 거리가 성공적으로 반환되는 것을 볼 수 있습니다. 뿐만 아니라 마음이 API의 사용 제한을 보관하십시오 :

표준 프로젝트로

https://developers.google.com/maps/documentation/distance-matrix/usage-limits

, 당신은 요청에 따라 100 개 요소의 최대 수 있습니다. 요소를 얻으려면 출발지 수와 목적지 수를 곱하면됩니다. 표준 프로젝트를 통해 10 개의 목적지와 10 개의 출발점을 가질 수 있습니다. 즉, 단일 요청으로 100 개 위치에 대해이 작업을 수행 할 수 없습니다. 프리미엄 프로젝트가없는 경우 10 개 배치로 위치를 조정해야합니다. 프리미엄 프로젝트를 사용하면 동일한 논리를 따를 수 있지만 동시에 25 개의 위치를 ​​사용할 수 있습니다.

나는 당신이 찾고있는 것에 대해 생각할 수있는 가장 가까운 솔루션을 알려 드리고 싶습니다. 이게 도움이 되길 바란다!

관련 문제