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 }