Java源码示例:com.esri.arcgisruntime.tasks.networkanalysis.TravelMode

示例1
@Override
public void run (){
  final LoadStatus status = mRouteTask.getLoadStatus();

  // Has the route task loaded successfully?
  if (status == LoadStatus.FAILED_TO_LOAD) {
    Log.i(TAG, mRouteTask.getLoadError().getMessage());
    Log.i(TAG, "CAUSE = " + mRouteTask.getLoadError().getCause().getMessage());
  } else {
    final ListenableFuture<RouteParameters> routeTaskFuture = mRouteTask
        .createDefaultParametersAsync();
    // Add a done listener that uses the returned route parameters
    // to build up a specific request for the route we need
    routeTaskFuture.addDoneListener(new Runnable() {

      @Override
      public void run() {
        try {
          final RouteParameters routeParameters = routeTaskFuture.get();
          final TravelMode mode = routeParameters.getTravelMode();
          mode.setImpedanceAttributeName("WalkTime");
          mode.setTimeAttributeName("WalkTime");
          // Set the restriction attributes for walk times
          List<String> restrictionAttributes = mode.getRestrictionAttributeNames();
          // clear default restrictions set for vehicles
          restrictionAttributes.clear();
          // add pedestrian restrictions
          restrictionAttributes.add("Avoid Roads Unsuitable for Pedestrians");
          restrictionAttributes.add("Preferred for Pedestrians");
          restrictionAttributes.add("Walking");

          // Add a stop for origin and destination
          routeParameters.setTravelMode(mode);
          routeParameters.getStops().add(origin);
          routeParameters.getStops().add(destination);
          // We want the task to return driving directions and routes
          routeParameters.setReturnDirections(true);

          routeParameters.setOutputSpatialReference(SpatialReferences.getWebMercator());

          final ListenableFuture<RouteResult> routeResFuture = mRouteTask
              .solveRouteAsync(routeParameters);
          routeResFuture.addDoneListener(new Runnable() {
            @Override
            public void run() {
              try {
                final RouteResult routeResult = routeResFuture.get();
                // Show route results
                if (routeResult != null){
                  mCallback.onRouteReturned(routeResult);

                }else{
                  Log.i(TAG, "NO RESULT FROM ROUTING");
                }

              } catch (final Exception e) {
                Log.e(TAG, e.getMessage());
              }
            }
          });
        } catch (final Exception e1){
          Log.e(TAG,e1.getMessage() );
        }
      }
    });
  }
}