001 package com.google.gwt.maps.client.services;
002
003 import com.google.gwt.core.client.JavaScriptObject;
004 import com.google.gwt.dom.client.Element;
005 import com.google.gwt.event.shared.HandlerRegistration;
006 import com.google.gwt.maps.client.MapImpl;
007 import com.google.gwt.maps.client.MapWidget;
008 import com.google.gwt.maps.client.events.MapEventType;
009 import com.google.gwt.maps.client.events.MapHandlerRegistration;
010 import com.google.gwt.maps.client.events.directions.DirectionsChangeEventFormatter;
011 import com.google.gwt.maps.client.events.directions.DirectionsChangeMapHandler;
012 import com.google.gwt.maps.client.mvc.MVCObject;
013
014 /**
015 * Renders directions retrieved in the form of a DirectionsResult object retrieved from the DirectionsService. This class extends MVCObject.
016 * <br><br>
017 * See <a href="https://developers.google.com/maps/documentation/javascript/reference#DirectionsRenderer">DirectionsRenderer API Doc</a>
018 */
019 public class DirectionsRenderer extends MVCObject<DirectionsRenderer> {
020
021 /**
022 * use newInstance();
023 */
024 protected DirectionsRenderer() {}
025
026 /**
027 * Renders directions retrieved in the form of a DirectionsResult object retrieved from the DirectionsService. This class extends MVCObject.
028 * @param options
029 */
030 public static final DirectionsRenderer newInstance(DirectionsRendererOptions options) {
031 return createJso(options).cast();
032 }
033
034 private static final native JavaScriptObject createJso(DirectionsRendererOptions options) /*-{
035 return new $wnd.google.maps.DirectionsRenderer(options);
036 }-*/;
037
038 /**
039 * Returns the renderer's current set of directions.
040 */
041 public final native DirectionsResult getDirections() /*-{
042 return this.getDirections();
043 }-*/;
044
045 /**
046 * This method specifies the map on which directions will be rendered. Pass null to remove the directions from the map.
047 * @param mapWidget
048 */
049 public final void setMap(MapWidget mapWidget) {
050 setMapImpl(mapWidget.getJso());
051 }
052
053 private final native void setMapImpl(MapImpl map) /*-{
054 this.setMap(map);
055 }-*/;
056
057 /**
058 * Returns the map on which the DirectionsResult is rendered.
059 */
060 public final MapWidget getMap() {
061 return MapWidget.newInstance(getMapImpl());
062 }
063
064 private final native MapImpl getMapImpl() /*-{
065 return this.getMap();
066 }-*/;
067
068 /**
069 * Returns the panel <code><div></code> in which the DirectionsResult is rendered.
070 */
071 public final native Element getPanel() /*-{
072 return this.getPanel();
073 }-*/;
074
075 /**
076 * Returns the current (zero-based) route index in use by this DirectionsRenderer object.
077 */
078 public final native int getRouteIndex() /*-{
079 return this.getRouteIndex();
080 }-*/;
081
082 /**
083 * Set the renderer to use the result from the DirectionsService. Setting a valid set of directions in this manner will display the directions on the renderer's designated map and panel.
084 * @param directions
085 */
086 public final native void setDirections(DirectionsResult directions) /*-{
087 this.setDirections(directions);
088 }-*/;
089
090 /**
091 * Change the options settings of this DirectionsRenderer after initialization.
092 * @param options
093 */
094 public final native void setOptions(DirectionsRendererOptions options) /*-{
095 this.setOptions(options);
096 }-*/;
097
098 /**
099 * This method renders the directions in a <code><div></code>. Pass null to remove the content from the panel.
100 * @param element
101 */
102 public final native void setPanel(Element element) /*-{
103 this.setPanel(element);
104 }-*/;
105
106 /**
107 * Set the (zero-based) index of the route in the DirectionsResult object to render. By default, the first route in the array will be rendered.
108 * @param routeIndex
109 */
110 public final native void setRouteIndex(int routeIndex) /*-{
111 this.setRouteIndex(routeIndex);
112 }-*/;
113
114 /**
115 * This event is fired when the rendered directions change, either when a new DirectionsResult is set or when the user finishes dragging a change to the directions path.
116 * @param handler
117 */
118 public final HandlerRegistration addDirectionsChangeHandler(DirectionsChangeMapHandler handler) {
119 return MapHandlerRegistration.addHandler(this, MapEventType.DIRECTIONS_CHANGED, handler, new DirectionsChangeEventFormatter());
120 }
121
122 }