Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自javascript的GWT MapWidget作为GMap2_Javascript_Gwt_Google Maps - Fatal编程技术网

来自javascript的GWT MapWidget作为GMap2

来自javascript的GWT MapWidget作为GMap2,javascript,gwt,google-maps,Javascript,Gwt,Google Maps,我正在为谷歌地图应用程序使用GWT。我使用谷歌的GWTMaps.jar来映射api 我可以创建一个地图作为 private MapWidget mapId; if (Maps.isBrowserCompatible()) { mapId = new MapWidget(); mapId.setPixelSize(600, 500); RootPanel.get("gmap").add(mapId); mapId.setCurrentMapType(MapType

我正在为谷歌地图应用程序使用GWT。我使用谷歌的GWTMaps.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代码需要在这个map对象上工作。我想用这样的东西:

$wnd.mapId.addOverlay(ovrlay1);
但我无法获取此$wnd.mapId变量。你们知道从某个元素的现有地图中获取GMap2对象的方法吗?如果我从我的“gmap”div中获得GMap2实例,它就会工作

目前,我正在使用JSNI生成所有地图功能。类似于:

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

看来我得自己回答这个问题了。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指出这一点