2017-01-23 77 views
0

我的一位同事目前正在努力將轉向轉換爲正在爲我們工作的公司開發的應用程序。我一直負責嘗試協助他,但是我們兩個都沒有取得任何進展。在使用Mapbox的Android應用程序中轉彎轉彎的方向

他正在使用Mapbox來創建地圖。我之前從未使用過mapbox,所以我沒有太多幫助。

他有代碼實現應該讓我們轉彎轉向,但它似乎沒有做任何事情。

對不起,如果我提出舊問題或不清楚我的情況,但這是最好的我可以解釋我自己。我們已經做了很多搜索,但我們沒有找到任何幫助。

這裏是他試過使用的代碼,應該實現轉彎方向。

private void getRoute(Waypoint origin, Waypoint destination) throws ServicesException { 

    MapboxDirections client = new MapboxDirections.Builder() 
      .setOrigin(origin) 
      .setDestination(destination) 
      .setProfile(DirectionsCriteria.PROFILE_DRIVING) 
      .setSteps(true) 
      // .setOverview(DirectionsCriteria.OVERVIEW_FULL) 
      .setInstructions(DirectionsCriteria.INSTRUCTIONS_TEXT) 
      .setAccessToken("pk.eyJ1IjoibnRyY3N2ZyIsImEiOiJCUmc4OHhjIn0.shHWdNg3Q32QUHJ1nOCs3A") 
      .build(); 

    client.enqueue(new retrofit.Callback<DirectionsResponse>() { 
     @Override 
     public void onResponse(Response<DirectionsResponse> response, Retrofit retrofit) { 
      // You can get the generic HTTP info about the response 
      Log.d(TAG, "Response code: " + response.code()); 
      if (response.body() == null) { 
       Log.e(TAG, "No routes found, make sure you set the right user and access token."); 
       return; 
      } else if (response.body().getRoutes().size() < 1) { 
       Log.e(TAG, "No routes found"); 
       return; 
      } 
     } 

     @Override 
     public void onFailure(Throwable t) { 
      Log.e(TAG, "Error: " + t.getMessage()); 
      Toast.makeText(MainActivity.this, "Error: " + t.getMessage(), Toast.LENGTH_SHORT).show(); 
     } 

     public void onResponse(Response<DirectionsResponse> call, Response<DirectionsResponse> response) { 
      // You can get the generic HTTP info about the response 
      Log.d(TAG, "Response code: " + response.code()); 
      if (response.body() == null) { 
       Log.e(TAG, "No routes found, make sure you set the right user and access token."); 
       return; 
      } else if (response.body().getRoutes().size() < 1) { 
       Log.e(TAG, "No routes found"); 
       return; 
      } 

      drawRoute(currentRoute); 
     } 


     private void drawRoute(DirectionsRoute route) { 
      // Convert LineString coordinates into LatLng[] 
      LineString lineString = LineString.fromPolyline(route.getGeometry(), Constants.OSRM_PRECISION_V5); 
      List<Position> coordinates = lineString.getCoordinates(); 
      LatLng[] points = new LatLng[coordinates.size()]; 
      for (int i = 0; i < coordinates.size(); i++) { 
       points[i] = new LatLng(

         coordinates.get(i).getLatitude(), 
         coordinates.get(i).getLongitude()); 
      } 

      Polyline polyline = mMapboxMap.addPolyline(new PolylineOptions() 
        .add(points) 
        .color(Color.RED) 
        .width(5)); 
      directionsOn = true; 


     } 

任何幫助將是非常讚賞。

在此先感謝。

回答

0

我強烈建議從Directions v4更改爲Mapbox Java中的v5。一旦你開關了,你可以在我們的網站找到this example。確保您也按照正確的順序傳遞座標,longitude先給出,然後再給出latitude

0

親愛的朋友mapbox也提供了詳細的文檔樣本代碼片段。 我已經建立了一個適用於我的需求的工作應用程序,方法是按照地圖框逐行導航文檔。

請點擊鏈接,讓我知道你是否面臨任何問題。

鏈接:https://www.mapbox.com/android-docs/navigation/overview/navigation-ui/

在這裏,您可以使用NavigationView組件輪流功能來定製mapbox轉。