001 package com.google.gwt.maps.client.placeslib;
002
003 import com.google.gwt.core.client.JavaScriptObject;
004 import com.google.gwt.core.client.JsArray;
005 import com.google.gwt.dom.client.Element;
006 import com.google.gwt.maps.client.MapImpl;
007 import com.google.gwt.maps.client.MapWidget;
008
009 /**
010 * Contains methods related to searching for Places and retrieving details about a Place.
011 * <br><br>
012 * See <a href="https://developers.google.com/maps/documentation/javascript/reference#PlaceSearchRequest">PlaceSearchRequest API Doc</a>
013 */
014 public class PlacesService extends JavaScriptObject {
015
016 /**
017 * use newInstance();
018 */
019 protected PlacesService() {}
020
021 /**
022 * Contains methods related to searching for Places and retrieving details about a Place.
023 * @param attrContainer
024 * @param mapWidget
025 */
026 public static final PlacesService newInstance(Element attrContainer, MapWidget mapWidget) {
027 return createJso(attrContainer, mapWidget.getJso());
028 }
029
030 private static final native PlacesService createJso(Element attrContainer, MapImpl map) /*-{
031 return new $wnd.google.maps.places.PlacesService(attrContainer, map);
032 }-*/;
033
034
035 /**
036 * Retrieves details about the Place identified by the given reference.
037 * @param request
038 * @param handler
039 */
040 public final native void getDetails(PlaceDetailsRequest request, PlaceDetailsHandler handler) /*-{
041 var callback = function(result, status) {
042 @com.google.gwt.maps.client.placeslib.PlacesService::processDetailsCallback(Lcom/google/gwt/maps/client/placeslib/PlaceResult;Ljava/lang/String;Lcom/google/gwt/maps/client/placeslib/PlaceDetailsHandler;)(result, status, handler);
043 };
044 this.getDetails(request, callback);
045 }-*/;
046
047 private static final void processDetailsCallback(PlaceResult result, String status, PlaceDetailsHandler handler) {
048 handler.onCallback(result, PlacesServiceStatus.fromValue(status));
049 }
050
051
052 /**
053 * Retrieves a list of Places in a given area. The PlaceResultss passed to the callback are stripped-down versions of a full PlaceResult. A more detailed PlaceResult for each Place can be obtained by sending a Place Details request with the desired Place's reference value.
054 * @param request
055 * @param handler
056 */
057 public final native void search(PlaceSearchRequest request, PlaceSearchHandler handler) /*-{
058 var callback = function (results, status) {
059 @com.google.gwt.maps.client.placeslib.PlacesService::processSearchCallback(Lcom/google/gwt/core/client/JsArray;Ljava/lang/String;Lcom/google/gwt/maps/client/placeslib/PlaceSearchHandler;)(results, status, handler);
060 };
061 this.search(request, callback);
062 }-*/;
063
064 private static final void processSearchCallback(JsArray<PlaceResult> results, String status, PlaceSearchHandler handler) {
065 handler.onCallback(results, PlacesServiceStatus.fromValue(status));
066 }
067
068
069
070 }