2016-10-26 69 views

回答

1

您可以使用此 Android-GoogleDirectionLibrary

要添加該庫中的gradle產出增加的依賴作爲

compile 'com.akexorcist:googledirectionlibrary:1.0.4' 

示例代碼

GoogleDirection.withServerKey("YOUR_SERVER_API_KEY") 
      .from(new LatLng(37.7681994, -122.444538)) 
       .to(new LatLng(37.7749003,-122.4034934)) 
       .avoid(AvoidType.FERRIES) 
       .avoid(AvoidType.HIGHWAYS) 
       .execute(new DirectionCallback() { 
     @Override 
     public void onDirectionSuccess(Direction direction, String rawBody) { 
      if(direction.isOK()) { 
       // Do something 
Snackbar.make(btnRequestDirection, "Success with status : " + direction.getStatus(), Snackbar.LENGTH_SHORT).show(); 
       googleMap.addMarker(new MarkerOptions().position(origin)); 
      googleMap.addMarker(new MarkerOptions().position(destination)); 

      ArrayList<LatLng> directionPositionList = direction.getRouteList().get(0).getLegList().get(0).getDirectionPoint(); 
      googleMap.addPolyline(DirectionConverter.createPolyline(this, directionPositionList, 5, Color.RED)); 

     } 

      } else { 
       // Do something 
      } 
     } 

     @Override 
     public void onDirectionFailure(Throwable t) { 
      // Do something 
     } 
    }); 
+0

onDirectionSuccess()會給出方向和rawBody,但我將如何顯示在活動中? –

+0

看到更新的代碼,請看鏈接 –

0
  1. 啓用谷歌地圖路線API在控制檯
  2. 您可以將該代碼轉移到地圖監聽器EG。

    @Override 
        public void onMapClick(LatLng latLng) { 
         GoogleDirectionConfiguration.getInstance().setLogEnabled(true); 
          $key = getResources().getString(R.string.google_maps_key; 
    
         GoogleDirection.withServerKey($key)) 
          .from(mCurrLocationMarker.getPosition()) 
          .to(latLng) 
          .transportMode(TransportMode.DRIVING) 
          .transitMode(TransitMode.BUS) 
          .unit(Unit.METRIC) 
          .execute(new DirectionCallback() { 
           @Override 
           public void onDirectionSuccess(Direction direction, String rawBody) { 
    
            Log.d("GoogleDirection", "Response Direction Status: " + direction.toString()+"\n"+rawBody); 
    
            if(direction.isOK()) { 
             // Do something 
             Route route = direction.getRouteList().get(0); 
             Leg leg = route.getLegList().get(0); 
             ArrayList<LatLng> directionPositionList = leg.getDirectionPoint(); 
             PolylineOptions polylineOptions = DirectionConverter.createPolyline(getApplication(), directionPositionList, 5, Color.RED); 
             mMap.addPolyline(polylineOptions); 
            } else { 
             // Do something 
            } 
           } 
    
           @Override 
           public void onDirectionFailure(Throwable t) { 
            // Do something 
            Log.e("GoogleDirection", "Response Direction Status: " + t.getMessage()+"\n"+t.getCause()); 
           } 
          }); 
    } 
    
+0

中給出的示例,原諒我糟糕的代碼上傳技巧。我在這裏是一隻新的蜜蜂。 – orups

+0

用'compile'替換'compile'c​​om.akexorcist:googledirectionlibrary:1.0.4'' com.akexorcist:googledirectionlibrary:1.0.5''啓用日誌記錄。 [鏈接](http://www.akexorcist.com/2015/12/google-direction-library-for-android-en.html) – orups

相關問題