Olá pessoal,
Baixai uma video aula sobre GWT com google maps api do site DevMedia e segui a receita do codigo, mas no final não executou. Estou tendo um erro que imagino ser algo errado na chamada do JSNI.
Estou postando em anexo o código fonte para que alguém possa dar uma olhada e me dar uma ajuda. É só importar o projeto no eclipse.
O erro é o seguinte:
[quote]description: O objeto não dá suporte para a propriedade ou método
at jvm.gwt.airports.client.GWTAirports.centerMap(Native Method)
at jvm.gwt.airports.client.GWTAirports.access$2(GWTAirports.java:95)
at jvm.gwt.airports.client.GWTAirports$2.onChange(GWTAirports.java:46)
at com.google.gwt.user.client.ui.ChangeListenerCollection.fireChange(ChangeListenerCollection.java:34)
at com.google.gwt.user.client.ui.ListBox.onBrowserEvent(ListBox.java:261)
at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1308)
at com.google.gwt.user.client.DOM.dispatchEventAndCatch(DOM.java:1287)
at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1255)[/quote]
Agradeço de antemão a ajuda.
Nao sei se é este trecho
private static native void centerMap(double latitude, double longitude) /*-{
$wnd.centerMap(latitude, longitude);
}-*/;
mas se for, coloque.:
$wnd.VariavelMapa.centerMap(latitude, longitude);
…nao pode pegar a variavel mapa direto, caso ele nao for static
Caso nao consiga…faça isso.:
public native void updateMap(double latitude, double longitude, JavaScriptObject object, MainEntryPoint thisModule) /*-{
object.lat = latitude
object.lon =longitude
//chamado do metodo renderMap com argumento javaScriptObjetct
thisModule.@[color=red]org.yournamehere.client.MainEntryPoint[/color]::renderMap(Lcom/google/gwt/core/client/JavaScriptObject;)(object);
//org.yournamehere.client.MainEntryPoint é a classe onde esta localizado o JSNI
}-*/;
depois cria este outro metodo:
public void renderMap(JavaScriptObject jsObj) {
double lat = Double.parseDouble(JavaScriptObjectHelper.getAttribute(jsObj, "lat"));
double lon = Double.parseDouble(JavaScriptObjectHelper.getAttribute(jsObj, "lon"));
LatLng point = LatLng.newInstance(lat, lon);
map.setCenter(point, 12);
}