-2

私はルートを取得するには、GoogleのJavaクライアントAPIを使用していますが、私はこのような要求を送信していますを与えていますそれは実際のルートでプロットしていないルートです。代わりに、イメージに示されているように直線をとるだけです。 enter image description here 修正方法?GoogleのJavaクライアントAPI方向APIは</p> <pre><code>DirectionsRoute[] routes = DirectionsApi.newRequest(context) .mode(TravelMode.DRIVING) .origin(start).destination(end) .waypoints(wayPoints).await(); </code></pre> <p>はまた、ルートを返すが、私はそのプロットするとされ、間違ったルート

+0

問題を示す[最小、完全、テスト済みおよび読み取り可能な例](http://stackoverflow.com/help/mcve)を入力してください。 – geocodezip

+0

私はこのDirectionApiをgoogle java api "com.google.maps.DirectionsApi"から取得しています。 –

答えて

1

実際に私はそのリクエストの後に私は経路で結果を得ている間違いをしましたが、lat langの配列からなるエンコーダーポリラインオブジェクトも含まれています。それを解読したらすべてのポイントを取得します私たちは正しく経路を得ることができます。 結果は、各要素が脚の配列(2点間の経路の詳細)で構成され、各脚はステップで構成され、最後に各ステップはポリラインをコード化して、ポリラインをデコードして使用する正しいlatlangを取得します。

0

ありがとう、私は多くの助けになりました。私は現在、xamarinで作業していて、このメソッドを使用してポリラインをデコードしています。

 private List<LatLng> DecodePolyline(string encodedPoints) 
    { 
     if (string.IsNullOrWhiteSpace(encodedPoints)) 
     { 
      return null; 
     } 

     int index = 0; 
     var polylineChars = encodedPoints.ToCharArray(); 
     var poly = new List<LatLng>(); 
     int currentLat = 0; 
     int currentLng = 0; 
     int next5Bits; 

     while (index < polylineChars.Length) 
     { 
      // calculate next latitude 
      int sum = 0; 
      int shifter = 0; 

      do 
      { 
       next5Bits = 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 = 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); 

      var mLatLng = new LatLng(Convert.ToDouble(currentLat)/100000.0, Convert.ToDouble(currentLng)/100000.0); 
      poly.Add(mLatLng); 
     } 

     return poly; 
    } 
関連する問題

 関連する問題