2009-10-29 2 views
0

J'utilise GWT pour l'application google map. J'utilise Google gwt-maps.jar pour mapper l'API.GWT MapWidget de javascript en GMap2

Je peux créer une carte comme

private MapWidget mapId; 

if (Maps.isBrowserCompatible()) { 
    mapId = new MapWidget(); 

    mapId.setPixelSize(600, 500); 
    RootPanel.get("gmap").add(mapId); 

    mapId.setCurrentMapType(MapType.getHybridMap()); 
    mapId.addControl(new LargeMapControl()); 
    mapId.addControl(new MapTypeControl()); 
    mapId.addControl(new ScaleControl()); 

    mapId.setCenter(LatLng.newInstance(-33.867139, 151.20711), 9); 
    } 

Maintenant, j'ai un certain héritage code javascript qui avait besoin de travailler sur cet objet carte. Je veux utiliser quelque chose comme ceci:

$wnd.mapId.addOverlay(ovrlay1); 

Mais je ne peux pas obtenir cette variable wnd.mapId $. Connaissez-vous un moyen d'obtenir l'objet GMap2 de la carte existante sur un élément? Cela fonctionnera si j'obtiens l'instance GMap2 de mon div "gmap".

Pour le moment, j'utilise JSNI pour générer toutes les fonctionnalités cartographiques. Simmilar to:

$wnd.mapId = new $wnd.GMap2($wnd.document.getElementById("gmap")); 

Répondre

0

On dirait que je dois y répondre moi-même. L'objet MapWidget peut renvoyer un handle vers l'objet javascript à l'aide de la méthode getPeer(). Ce dont j'ai besoin, c'est de lier un objet javascript en appelant getPeer. Le code suivant le fait.

private MapWidget mapId; 

if (Maps.isBrowserCompatible()) { 
    mapId = new MapWidget(); 
    nativeExportMapPeer(mapId.getPeer()); 
    ... 
} 

... 

// export the native GMap2 object with a JSNI method 
private static native void nativeExportMapPeer(JavaScriptObject peer) /*-{ 
     $wnd.mapId = peer; 
}-*/; 

Merci à Eric Z. Ayers de l'avoir signalé.

Questions connexes