001 package com.google.gwt.maps.client.layers; 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.events.MapEventType; 008 import com.google.gwt.maps.client.events.MapHandlerRegistration; 009 import com.google.gwt.maps.client.events.fusiontablemouse.FusionTablesMouseEventFormatter; 010 import com.google.gwt.maps.client.events.fusiontablemouse.FusionTablesMouseMapHandler; 011 import com.google.gwt.maps.client.mvc.MVCObject; 012 013 /** 014 * A FusionTablesLayer allows you to display data from a Google Fusion Table on a map, as a rendered layer. (See <a href="https://developers.google.com/fusiontables/">Fusion Table site</a>). Table data can be queried using the same query language as is used in the Fusion Tables API. This class extends MVCObject. 015 * <br><br> 016 * See <a href="https://developers.google.com/maps/documentation/javascript/reference#FusionTablesLayer">FusionTablesLayer API Doc</a> 017 */ 018 public class FusionTablesLayer extends MVCObject<FusionTablesLayer> { 019 020 /** 021 * use newInstance(); 022 */ 023 protected FusionTablesLayer() {} 024 025 /** 026 * A layer that displays data from a Fusion Table. 027 * @param options 028 */ 029 public final static FusionTablesLayer newInstance(FusionTablesLayerOptions options) { 030 return createJso(options).cast(); 031 } 032 033 private static native JavaScriptObject createJso(FusionTablesLayerOptions options) /*-{ 034 return new $wnd.google.maps.FusionTablesLayer(options); 035 }-*/; 036 037 /** 038 * Renders the layer on the specified map. If map is set to null, the layer will be removed. 039 * @param mapWidget 040 */ 041 public final void setMap(MapWidget mapWidget) { 042 setMapImpl(mapWidget.getJso()); 043 } 044 045 private final native void setMapImpl(MapImpl map) /*-{ 046 this.map = map; 047 }-*/; 048 049 /** 050 * Returns the map on which this layer is displayed. 051 */ 052 public final MapWidget getMap() { 053 return MapWidget.newInstance(getMapImpl()); 054 } 055 056 private final native MapImpl getMapImpl() /*-{ 057 return this.map; 058 }-*/; 059 060 /** 061 * set Options 062 * @param options 063 */ 064 public final native void setOptions(FusionTablesLayerOptions options) /*-{ 065 this.setOptions(options); 066 }-*/; 067 068 /** 069 * This event is fired when a feature in the layer is clicked. 070 * @param handler 071 */ 072 public final HandlerRegistration addClickHandler(FusionTablesMouseMapHandler handler) { 073 return MapHandlerRegistration.addHandler(this, MapEventType.CLICK, handler, new FusionTablesMouseEventFormatter()); 074 } 075 }