package edu.ucdavis.cstars.client.tasks;
import com.google.gwt.core.client.JavaScriptObject;
import edu.ucdavis.cstars.client.callback.ServiceAreaSolveCallback;
import edu.ucdavis.cstars.client.dojo.Deferred;
import edu.ucdavis.cstars.client.event.ServiceAreaSolveHandler;
/**
* Helps you find service areas around any location on a network. A network service area is a region that
* encompasses all accessible streets that is, streets that are within a specified impedance. For instance,
* the 5-minute service area for a point includes all the streets that can be reached within five minutes
* from that point.
*
* Note: ServiceAreaTask, and other service area related classes, requires ArcGIS Server 10.0 or above
* and a service area layer. A service area layer is a layer of type esriNAServerServiceAreaLayer.
*
* @author Justin Merz
*/
public class ServiceAreaTask extends JavaScriptObject {
protected ServiceAreaTask() {}
/**
* Creates a new ServiceAreaTask object.
*
* @param url - URL to the ArcGIS Server REST resource that represents a network analysis service. Use the Service Directory to obtain the URL.
* @return ServiceAreaTask
*/
public static native ServiceAreaTask create(String url) /*-{
return new $wnd.esri.tasks.ServiceAreaTask(url);
}-*/;
/**
* Solve the service area.
*
* @param params - The ServiceAreaParameters object.
* @param callback - The function to call when the method has completed.
* @return Deferred
*/
public final native Deferred solve(ServiceAreaParameters params, ServiceAreaSolveCallback callback) /*-{
return this.solve( params,
function(serviceAreaSolveResult) {
callback.@edu.ucdavis.cstars.client.callback.ServiceAreaSolveCallback::onSolveComplete(Ledu/ucdavis/cstars/client/tasks/ServiceAreaSolveResult;)(serviceAreaSolveResult);
},
function(error) {
callback.@edu.ucdavis.cstars.client.callback.ServiceAreaSolveCallback::onError(Ledu/ucdavis/cstars/client/Error;)(error);
}
);
}-*/;
/**
* Solve the service area.
*
* @param params - The ServiceAreaParameters object.
* @return Deferred
*/
public final native Deferred solve(ServiceAreaParameters params) /*-{
return this.solve( params );
}-*/;
/**
* Add event handler to listen to the onSolveComplete event
*
* @param handler - Fired when the ServiceAreaTask solve is complete.
*/
public final native void addSolveHandler(ServiceAreaSolveHandler handler) /*-{
$wnd.dojo.connect(this, "onSolveComplete",
function(serviceAreaSolveResult) {
handler.@edu.ucdavis.cstars.client.event.ServiceAreaSolveHandler::onSolveComplete(Ledu/ucdavis/cstars/client/tasks/ServiceAreaSolveResult;)(serviceAreaSolveResult);
}
);
}-*/;
}