javascript和GWT代码之间的通信

时间:2012-05-18 10:48:59

标签: javascript google-maps gwt

我使用google maps v3 api为GWT创建了一张地图。我试图在此地图上显示kml,但这是不可能的,因为它存储在本地。所以,我正在尝试使用geoxml3来解析我的本地kml。

我需要javascript代码才能“看到”我使用GWT创建的地图。我怎么能这样做?

我使用

创建地图

map = GoogleMap.create(Document.get()。getElementById(“map_canvas”),myOptions); (map_canvas是我的html页面中的div)

我想调用Javascript函数来解析KML文件并将其呈现在我的地图上。我知道如何调用JS函数,但我不知道在其体内写什么。,,

2 个答案:

答案 0 :(得分:2)

这是我在gwt / gxt google maps api v3中绘制本地kml文件的方式 在互联网上查找并下载geoxml3.js和ProjectedOverlay.js。 在你的html put:<

script type =“text / javascript”  SRC = 'YourServicePath / geoxml3.js' >

添加一些程序来将kml操作调用到客户端条目java文件:

public final native JavaScriptObject createKmlParser(JavaScriptObject mapId) /*-{
var myParser = new $wnd.geoXML3.parser({map: mapId});

    return myParser;
}-*/;

public final native void showKml(JavaScriptObject parser, String kml) /*-{
    parser.parseKmlString(kml);
}-*/;

public final native void hideKml(JavaScriptObject parser) /*-{
    parser.hideDocument();
}-*/;

由于ProjectedOverlay.js需要连接谷歌地图,我们会在连接谷歌地图后注入它。

mapWidget = new MapWidget(opts);

ScriptInjector.fromUrl(
    GWT.getHostPageBaseURL() + "YourServicePath/ProjectedOverlay.js").setCallback(new Callback() {

@Override
public void onFailure(Object reason) {
    System.out.println("Script load failed");
}

@Override
public void onSuccess(Object result) {

}
}).setWindow(ScriptInjector.TOP_WINDOW).inject();

To show the KML:
public JavaScriptObject parserGeoXml3;

if (mapWidget != null) {
    JavaScriptObject jsoParser = createKmlParser(mapWidget.getJso());
         parserGeoXml3 = jsoParser;
    try {
        showKml(jsoParser, kmlStr);
        } catch (JavaScriptException jse) {

        }
}
To hide:
try {
    hideKml(parserGeoXml3);
} catch (JavaScriptException jse) {

}

答案 1 :(得分:0)

以下是GWT文档中JSNI的编码基础知识。这绝对可以帮助你如何编写函数体。

相关问题