001    package com.google.gwt.maps.client.services;
002    
003    import com.google.gwt.core.client.JavaScriptObject;
004    import com.google.gwt.core.client.JsArray;
005    import com.google.gwt.core.client.JsArrayString;
006    import com.google.gwt.maps.client.base.LatLng;
007    import com.google.gwt.maps.client.workaround.WorkAroundUtils;
008    
009    /**
010     * A distance matrix query sent by the DistanceMatrixService containing arrays of origin and destination locations, and various options for computing metrics.
011     * <br><br>
012     * See <a href="https://developers.google.com/maps/documentation/javascript/reference#DistanceMatrixRequest">DistanceMatrixRequest API Doc</a>
013     */
014    public class DistanceMatrixRequest extends JavaScriptObject {
015    
016      /**
017       * use newInstance();
018       */
019      protected DistanceMatrixRequest() {}
020      
021      /**
022       * A distance matrix query sent by the DistanceMatrixService containing arrays of origin and destination locations, and various options for computing metrics.
023       */
024      public static final DistanceMatrixRequest newInstance() {
025        JavaScriptObject jso = JavaScriptObject.createObject();
026        WorkAroundUtils.removeGwtObjectId(jso);
027        return jso.cast();
028      }
029      
030      /**
031       * If true, instructs the Distance Matrix service to avoid highways where possible. Optional.
032       * @param avoidHighways
033       */
034      public final native void setAvoidHighways(boolean avoidHighways) /*-{
035        this.avoidHighways = avoidHighways;
036      }-*/;
037      
038      /**
039       * If true, instructs the Distance Matrix service to avoid highways where possible. Optional.
040       */
041      public final native boolean getAvoidHighways() /*-{
042        return this.avoidHighways;
043      }-*/;
044      
045      /**
046       * If true, instructs the Distance Matrix service to avoid toll roads where possible. Optional.
047       * @param avoidTolls
048       */
049      public final native void setAvoidTolls(boolean avoidTolls) /*-{
050        this.avoidTolls = avoidTolls;
051      }-*/;
052      
053      /**
054       * If true, instructs the Distance Matrix service to avoid toll roads where possible. Optional.
055       */
056      public final native boolean getAvoidTolls() /*-{
057        return this.avoidTolls;
058      }-*/;
059      
060      /**
061       * An array containing destination address strings and/or LatLngs, to which to calculate distance and time. Required.
062       * @param destinations
063       */
064      public final native void setDestinations(JsArray<LatLng> destinations) /*-{
065        this.destinations = destinations;
066      }-*/;
067      
068      /**
069       * An array containing destination address strings and/or LatLngs, to which to calculate distance and time. Required.
070       */
071      public final native JsArray<LatLng> getDestinations() /*-{
072        return this.destinations;
073      }-*/;
074      
075      /**
076       * An array containing destination address strings and/or LatLngs, to which to calculate distance and time. Required.
077       * @param destinations
078       */
079      public final native void setDestinations(JsArrayString destinations) /*-{
080        this.destinations = destinations;
081      }-*/;
082      
083      /**
084       * An array containing destination address strings and/or LatLngs, to which to calculate distance and time. Required.
085       */
086      public final native JsArrayString getDestinations_Strings() /*-{
087        return this.destinations;
088      }-*/;
089    
090      /**
091       * An array containing origin address strings and/or LatLngs, from which to calculate distance and time. Required.
092       * @param origins
093       */
094      public final native void setOrigins(JsArray<LatLng> origins) /*-{
095        this.origins = origins;
096      }-*/;
097      
098      /**
099       * An array containing origin address strings and/or LatLngs, from which to calculate distance and time. Required.
100       */
101      public final native JsArray<LatLng> getOrigins() /*-{
102        return this.origins;
103      }-*/;
104      
105      /**
106       * An array containing origin address strings and/or LatLngs, from which to calculate distance and time. Required.
107       * @param origins
108       */
109      public final native void setOrigins(JsArrayString origins) /*-{
110        this.origins = origins;
111      }-*/;
112      
113      /**
114       * An array containing origin address strings and/or LatLngs, from which to calculate distance and time. Required.
115       */
116      public final native JsArrayString getOrigins_Strings() /*-{
117        return this.origins;
118      }-*/;
119      
120      /**
121       * Region code used as a bias for geocoding requests. Optional.
122       * @param region
123       */
124      public final native void setRegion(String region) /*-{
125        this.region = region;
126      }-*/;
127      
128      /**
129       * Create new {@link DistanceMatrixRequest} instance
130       */
131      public final native String getRegion() /*-{
132        return this.region;
133      }-*/;
134      
135      /**
136       * Region code used as a bias for geocoding requests. Optional.
137       * @param travelMode
138       */
139      public final void setTravelMode(TravelMode travelMode) {
140        setTravelModeImpl(travelMode.value());
141      }
142    
143      private final native void setTravelModeImpl(String travelMode) /*-{
144        this.travelMode = travelMode;
145      }-*/;
146      
147      /**
148       * Type of routing requested. Required.
149       */
150      public final TravelMode getTravelMode() {
151        return TravelMode.fromValue(getTravelModeImpl());
152      }
153      
154      private final native String getTravelModeImpl() /*-{
155        return this.travelMode;
156      }-*/;
157      
158      /**
159       * Type of routing requested. Required.
160       * @param unitSystem
161       */
162      public final void setUnitSystem(UnitSystem unitSystem) {
163        setUnitSystemImpl(unitSystem.value());
164      }
165      
166      private final native void setUnitSystemImpl(int unitSystem) /*-{
167        this.unitSystem = unitSystem;
168      }-*/;
169      
170      /**
171       * Preferred unit system to use when displaying distance. Optional; defaults to metric.
172       */
173      public final UnitSystem getUnitSystem() {
174        return UnitSystem.fromValue(getUnitSystemImpl());
175      }
176      
177      private final native int getUnitSystemImpl() /*-{
178        return this.unitSystem;
179      }-*/;
180      
181    }