001 package com.google.gwt.maps.client.overlays;
002
003 import com.google.gwt.core.client.JavaScriptObject;
004 import com.google.gwt.event.shared.HandlerRegistration;
005 import com.google.gwt.maps.client.MapImpl;
006 import com.google.gwt.maps.client.MapWidget;
007 import com.google.gwt.maps.client.base.LatLngBounds;
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.click.ClickEventFormatter;
011 import com.google.gwt.maps.client.events.click.ClickMapHandler;
012 import com.google.gwt.maps.client.mvc.MVCObject;
013
014 /**
015 * A groundoverlay overlay. This class extends MVCObject.
016 * <br><br>
017 * See <a href="https://developers.google.com/maps/documentation/javascript/reference#GroundOverlay">GroundOverlay API Doc</a>
018 */
019 public class GroundOverlay extends MVCObject<GroundOverlay> {
020
021 /**
022 * use newInstance();
023 */
024 protected GroundOverlay() {}
025
026 /**
027 * Creates a ground overlay from the provided image URL and its LatLngBounds. The image is scaled to fit the current bounds, and projected using the current map projection.
028 * @param url
029 * @param bounds
030 * @param options
031 */
032 public final static GroundOverlay newInstance(String url, LatLngBounds bounds, GroundOverlayOptions options) {
033 return createJso(url, bounds, options).cast();
034 }
035
036 private final static native JavaScriptObject createJso(String url, LatLngBounds bounds, GroundOverlayOptions options) /*-{
037 return new $wnd.google.maps.GroundOverlay(url, bounds, options);
038 }-*/;
039
040 /**
041 * Returns the bounds of this groundoverlay.
042 */
043 public final native LatLngBounds getBounds() /*-{
044 return this.getBounds();
045 }-*/;
046
047 /**
048 * Renders the groundoverlay on the specified map. If map is set to null, the groundoverlay will be removed.
049 * @param mapWidget
050 */
051 public final void setMap(MapWidget mapWidget) {
052 setMapImpl(mapWidget.getJso());
053 }
054
055 private final native void setMapImpl(MapImpl map) /*-{
056 this.map = map;
057 }-*/;
058
059 /**
060 * Returns the map on which this groundoverlay is displayed.
061 */
062 public final MapWidget getMap() {
063 return MapWidget.newInstance(getMapImpl());
064 }
065
066 private final native MapImpl getMapImpl() /*-{
067 return this.map;
068 }-*/;
069
070 /**
071 * Gets the url of the projected image.
072 */
073 public final native String getUrl() /*-{
074 this.getUrl();
075 }-*/;
076
077 /**
078 * This event is fired when the DOM click event is fired on the GroundOverlay.
079 * @param handler
080 */
081 public final HandlerRegistration addClickHandler(ClickMapHandler handler) {
082 return MapHandlerRegistration.addHandler(this, MapEventType.CLICK, handler, new ClickEventFormatter());
083 }
084
085 }