来自javascript的GWT MapWidget为GMap2

时间:2009-10-29 02:38:15

标签: javascript gwt google-maps

我正在使用GWT进行谷歌地图应用。我使用Google的 gwt-maps.jar 来映射api。

我可以创建一个地图

 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);
  }

现在我有一些需要处理这个地图对象的遗留javascript代码。我想用这样的东西:

$wnd.mapId.addOverlay(ovrlay1);

但是我无法获得这个$ wnd.mapId变量。你知道从某个元素的现有地图中获取GMap2对象的方法吗?如果我从“gmap”div获得GMap2实例,它将起作用。

目前我正在使用JSNI生成所有地图功能。西米拉尔:

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

1 个答案:

答案 0 :(得分:0)

看起来我必须自己回答这个问题。 MapWidget对象可以使用getPeer()方法返回javascript对象的句柄。所以我需要的是通过调用getPeer绑定一个javascript对象。以下代码执行此操作。

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;
 }-*/;

感谢Eric Z. Ayers指出这一点。