2013-10-26 43 views
1

我想在我的GWT網絡應用程序中添加一個搜索欄,它利用了InputElement和AutoComplete。搜索欄基本上是爲了在GoogleMap上搜索位置。 這裏是我到目前爲止做出的代碼:GWT:UiBinder + InputElement

@UiField 
InputElement input; 
// 
// 
// 
final Autocomplete autocomplete = Autocomplete.create(input);  
     final InfoWindow infowindow= InfoWindow.create(); 
     autocomplete.addPlaceChangedListener(new PlaceChangedHandler(){ 
      public void handle(){ 
       PlaceResult place=autocomplete.getPlace(); 
       String address=place.getAddressComponents().get(0).getShortName(); 
       infowindow.setContent(place.getName()+", "+address);    
       addMarker(place.getGeometry().getLocation(),place,infowindow); 
       map.setCenter(place.getGeometry().getLocation()); 
       map.setZoom(17.0);  

      } 
     }); 
// 
// 
// 
<g:north size='5'> 
      <g:HTMLPanel> 
       <div> 
        <g:Label ui:field="label1">PublicFortress</g:Label> 
       </div> 
       <div> 
        <g:Anchor ui:field="signin" href="#">SignIn</g:Anchor> 
        <g:Button ui:field="home">Home</g:Button> 
        <div> 
         <input type="text" name="Search" ui:field="input" class="custom" /> 
        </div> 

       </div>   

      </g:HTMLPanel> 
     </g:north> 

我知道這是不是做的工作,因此我得到了以下錯誤的正確方法是:

com.google .gwt.core.client.JavaScriptException:(TypeError) @ com.google.maps.gwt.client.places.Autocomplete :: create(Lcom/google/gwt/dom/client/InputElement;)([JavaScript object( 30)]):$ wnd.google.maps.places未定義爲 ,位於com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:249)

請幫忙!

+0

爲什麼不用代替? – chkal

+0

我嘗試使用g:TextBox,我得到了同樣的錯誤。 ,我沒有主要的變化是: 1)的搜索 \t 2)@UiField 文本框輸入; 3)最終自動完成自動完成= Autocomplete.newInstance(input.getElement(),null); – Dexter

+0

對不起,錯誤不一樣: com.google.gwt.core.client.JavaScriptException:(TypeError)@ com.google.gwt.maps.client.placeslib.Autocomplete :: createJso(Lcom/google/gwt/dom/client/Element; Lcom/google/gwt/maps/client/placeslib/AutocompleteOptions;)([JavaScript object(36),null]):$ wnd.google.maps.places is undefined – Dexter

回答

0

我明白了。

1)在.html文件: 代碼的主要部分(這是我的java類早些時候,我已經錯過了一部分)

<head> 
. 
. 
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=places&sensor=false"></script> 
</head> 

2):(使用G:文本框)

final AutocompleteOptions options = AutocompleteOptions.newInstance(); 
     final Autocomplete autocomplete = Autocomplete.newInstance(input.getElement(), options);  
     final InfoWindow infowindow= InfoWindow.create(); 
     autocomplete.addPlaceChangeHandler(new PlaceChangeMapHandler(){ 

      @Override 
      public void onEvent(PlaceChangeMapEvent event) { 
       PlaceResult place=autocomplete.getPlace(); 
       String address=place.getAddress_Components().get(0).getShort_Name(); 
       infowindow.setContent(place.getName()+", "+address);   
       LatLng latLng = LatLng.create(place.getGeometry().getLocation().getLatitude(), place.getGeometry().getLocation().getLongitude()); 
       addMarker(latLng,place,infowindow); 
       map.setCenter(latLng); 
       map.setZoom(17.0);    
      } 
     }); 
相關問題