001 package com.google.gwt.maps.client.services; 002 003 import com.google.gwt.core.client.JavaScriptObject; 004 import com.google.gwt.core.client.JsArray; 005 006 /** 007 * A service for converting between an address and LatLng. 008 */ 009 public class Geocoder extends JavaScriptObject { 010 011 /** 012 * use newInstance(); 013 */ 014 protected Geocoder() {} 015 016 /** 017 * Creates a new instance of a Geocoder that sends geocode requests to Google servers. 018 */ 019 public static final Geocoder newInstance() { 020 return createJso().cast(); 021 } 022 023 private static final native JavaScriptObject createJso() /*-{ 024 return new $wnd.google.maps.Geocoder(); 025 }-*/; 026 027 /** 028 * Geocode a request. 029 * @param request 030 * @param handler 031 */ 032 public final native void geocode(GeocoderRequest request, GeocoderRequestHandler handler) /*-{ 033 var callback = function(results, status) { 034 @com.google.gwt.maps.client.services.Geocoder::geocodeImpl(Lcom/google/gwt/core/client/JsArray;Ljava/lang/String;Lcom/google/gwt/maps/client/services/GeocoderRequestHandler;)(results, status, handler); 035 }; 036 this.geocode(request, callback); 037 }-*/; 038 039 private static final void geocodeImpl(JsArray<GeocoderResult> results, String status, GeocoderRequestHandler handler) { 040 handler.onCallback(results, GeocoderStatus.fromValue(status)); 041 } 042 043 }