【问题标题】:Communication between javascript and GWT codejavascript和GWT代码之间的通信
【发布时间】:2012-05-25 22:41:57
【问题描述】:

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

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

我使用创建地图

map = GoogleMap.create(Document.get().getElementById("map_canvas"), myOptions); (map_canvas 是我的 html 页面中的一个 div)

我想调用一个 Javascript 函数来解析 KML 文件并将其显示在我的地图上。我知道如何调用一个 JS 函数,但我不知道在它的主体中写什么。,,

【问题讨论】:

    标签: javascript google-maps gwt


    【解决方案1】:

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

    脚本类型="文本/javascript" src='YourServicePath/geoxml3.js'>

    在你的客户端入口java文件中添加一些调用kml操作的过程:

    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 需要连接 Google 地图,我们将在连接到 Google 地图后将其注入。

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

    【讨论】:

    • 看起来是一个很好的例子,但不知道为什么它对我不起作用..项目构建良好但 KML 不会显示..
    【解决方案2】:

    这里是来自 GWT 文档的 JSNI 编码基础知识。这绝对可以帮助您编写函数的主体。

    【讨论】:

    猜你喜欢
    • 2015-05-28
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多