0

google direction API 응답에 대한 아래 참조를 참조하십시오. Google API 인코딩 Monodroid C#

https://developers.google.com/maps/documentation/directions/?csw=1#JSON

step 태그를 볼 수

polyline라는 태그를 포함한다. 이 태그에는 points이라는 하위 태그가 포함되어 있습니다. 내가 아는 한,이 태그에는지도상의이 단계를 그리는 데 필요한 모든 포인트가 포함됩니다. 그리고 값을 볼 수 있습니다. 나는 그것이 인코딩 모르겠어요하지만 구글에서 아래 문서의 알고리즘을 설명

https://developers.google.com/maps/documentation/utilities/polylinealgorithm?csw=1

은 하나가 monondorid에 사용하기위한 List<LatLng>이 값을 디코딩에 대한 몇 가지 코드를 가지고 있습니까?

답변

0

내 대답을 여러 번 검색했기 때문에이 주제를 공유했습니다.

http://www.codeproject.com/Tips/312248/Google-Maps-Direction-API-V3-Polyline-Decoder

을 여기에 monodroid에 사용하기위한 코드입니다 : 아래 기사에서 Saboor 아완은 C#을로 인코딩하는 방법을 설명합니다

private List<LatLng > DecodePolylinePoints(string encodedPoints) 
{ 
    if (encodedPoints == null || encodedPoints == "") return null; 
    List<LatLng> poly = new List<LatLng>(); 
    char[] polylinechars = encodedPoints.ToCharArray(); 
    int index = 0; 
    int currentLat = 0; 
    int currentLng = 0; 
    int next5bits; 
    int sum; 
    int shifter; 
    try 
    { 
     while (index < polylinechars.Length) 
     { 
      // calculate next latitude 
      sum = 0; 
      shifter = 0; 
      do 
      { 
       next5bits = (int)polylinechars[index++] - 63; 
       sum |= (next5bits & 31) << shifter; 
       shifter += 5; 
      } while (next5bits >= 32 && index < polylinechars.Length); 
       if (index >= polylinechars.Length) 
       break; 
       currentLat += (sum & 1) == 1 ? ~(sum >> 1) : (sum >> 1); 
       //calculate next longitude 
      sum = 0; 
      shifter = 0; 
      do 
      { 
       next5bits = (int)polylinechars[index++] - 63; 
       sum |= (next5bits & 31) << shifter; 
       shifter += 5; 
      } while (next5bits >= 32 && index < polylinechars.Length); 
       if (index >= polylinechars.Length && next5bits >= 32) 
       break; 
       currentLng += (sum & 1) == 1 ? ~(sum >> 1) : (sum >> 1); 
      LatLng p = new LatLng(Convert.ToDouble(currentLat)/100000.0, 
       Convert.ToDouble(currentLng)/100000.0); 
      poly.Add(p); 
     } 
    } 
    catch (Exception ex) 
    { 
     //log 
    } 
    return poly; 
} 

그냥 LatLnglocation를 교체해야합니다.