001 package com.google.gwt.maps.client.panoramiolib; 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.panoramiomouse.PanoramioMouseEventFormatter; 010 import com.google.gwt.maps.client.events.panoramiomouse.PanoramioMouseMapHandler; 011 import com.google.gwt.maps.client.mvc.MVCObject; 012 013 /** 014 * A PanoramioLayer displays photos from Panoramio as a rendered layer. This class extends MVCObject. 015 * <br><br> 016 * See <a href="https://developers.google.com/maps/documentation/javascript/reference#PanoramioLayer">PanoramioLayer API Doc</a> 017 */ 018 public class PanoramioLayer extends MVCObject<PanoramioLayer> { 019 020 /** 021 * use newInstance(); 022 */ 023 protected PanoramioLayer() {} 024 025 /** 026 * A PanoramioLayer displays photos from Panoramio as a rendered layer. This class extends MVCObject. 027 * @param options 028 */ 029 public static final PanoramioLayer newInstance(PanoramioLayerOptions options) { 030 return createJso(options).cast(); 031 } 032 033 private static final native JavaScriptObject createJso(PanoramioLayerOptions options) /*-{ 034 return new $wnd.google.maps.panoramio.PanoramioLayer(options); 035 }-*/; 036 037 /** 038 * The map on which to display the layer. 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 * The map on which to display the layer. 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 * A panoramio tag used to filter the photos which are displayed. Only photos which have been tagged with the supplied string will be shown. 062 */ 063 public final native String getTag() /*-{ 064 return this.getTag(); 065 }-*/; 066 067 /** 068 * A panoramio tag used to filter the photos which are displayed. Only photos which have been tagged with the supplied string will be shown. 069 * @param tag 070 */ 071 public final native void setTag(String tag) /*-{ 072 this.setTag(tag); 073 }-*/; 074 075 /** 076 * A Panoramio user ID. If provided, only photos by this user will be displayed on the map. If both a tag and user ID are provided, the tag will take precedence. 077 * @param userId 078 */ 079 public final native void setUserId(String userId) /*-{ 080 this.userId = userId; 081 }-*/; 082 083 /** 084 * A Panoramio user ID. If provided, only photos by this user will be displayed on the map. If both a tag and user ID are provided, the tag will take precedence. 085 */ 086 public final native String getUserId() /*-{ 087 return this.userId; 088 }-*/; 089 090 /** 091 * This object defines the properties that can be set on a PanoramioLayer object. 092 * @param options 093 */ 094 public final native void setOption(PanoramioLayerOptions options) /*-{ 095 this.options = options; 096 }-*/; 097 098 /** 099 * This event is fired when a feature in the layer is clicked. 100 * @param handler 101 */ 102 public final HandlerRegistration addClickHandler(PanoramioMouseMapHandler handler) { 103 return MapHandlerRegistration.addHandler(this, MapEventType.CLICK, handler, new PanoramioMouseEventFormatter()); 104 } 105 }