0

我已将 geoxml3.js 添加到我的 GWT 项目并添加<script type="text/javascript" src="geoxml3.js"></script>到我的主机 html 文件中。

在我的 java 源文件中,我有:

// KML utils
    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();
    }-*/;

    public void setupKmlLayer(final MapWidget mapWidget) {
        final JavaScriptObject jsoParser = createKmlParser(mapWidget.getJso());
        try {
            showKml(jsoParser, "cta.kml");
        } catch (final JavaScriptException jse) {

        }
    }

它被称为:

setupKmlLayer(mapWidget);

KML 文件位于该 java 文件所在的同一包中。

我从谷歌的官方页面获得了 KML 文件:http: //gmaps-samples.googlecode.com/svn/trunk/ggeoxml/cta.kml

请有任何提示

4

1 回答 1

0

您的方法showKml()使用该parseKmlString()方法。这会将给定的参数解析为 KML。但是您将其命名为 KML 文件。

因此:除了解析错误什么都不会发生。

查看此文档页面,了解如何为其提供 URL:

https://code.google.com/p/geoxml/wiki/GeoXmlMethods

我认为(不知道这一点)你应该对这样的 showKml 实现感到满意:

public final native void showKml(JavaScriptObject parser, String kmlUrl) /*-{
    parser.urls = [kmlUrl];
    parser.parse();
}-*/;    
于 2015-04-15T14:00:41.120 回答