【问题标题】:GWT MapWidget from javascript as GMap2来自 javascript 的 GWT MapWidget 作为 GMap2
【发布时间】:2009-10-29 02:38:14
【问题描述】:

我将 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"));

【问题讨论】:

    标签: javascript gwt google-maps


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 2013-09-22
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 2015-02-21
      相关资源
      最近更新 更多