GWT:基本KML渲染不工作

GWT:基本KML渲染不工作,gwt,google-maps-api-3,jsni,geoxml3,Gwt,Google Maps Api 3,Jsni,Geoxml3,我已经将geomml3.js添加到我的GWT项目中,并将添加到我的主机html文件中 在我的java源文件中,我有: // KML utils public final native JavaScriptObject createKmlParser(JavaScriptObject mapId) /*-{ var myParser = new $wnd.geoXML3.parser({ map : mapId });

我已经将geomml3.js添加到我的GWT项目中,并将
添加到我的主机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文件:

任何提示请您的方法
showKml()
使用
parseKmlString()
方法。这将把给定的参数解析为KML。但您正在将文件名指定给KML文件

因此:除了解析错误之外,什么也不会发生

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

我认为(在不知道这一点的情况下)您应该对showKml实现感到满意,如下所示:

public final native void showKml(JavaScriptObject parser, String kmlUrl) /*-{
    parser.urls = [kmlUrl];
    parser.parse();
}-*/;    

我不能在kml上真正帮助你,但如果你能描述一下实际发生的事情,那将是非常有帮助的。是页面中的本机调用,是否可以调试本机函数。。。更多信息会很有帮助。我不知道如何调试本机代码,但我在showKml(jsoParser,“cta.kml”);在上面我试着在catch块中放置一个警报。你使用SuperDevMode和ChromeJS调试器吗?源代码映射中应该有这个类,如果你在开发过程中没有混淆的话,你应该可以找到真正的本机代码。啊……是的,我可以调试代码。一切看起来都很正常。我想它没有得到我的kml文件。有没有办法确定我的程序能够选择本地放置的kml文件?在调试程序的网络面板中应该可以看到访问权限我正在使用geoxml3.js,但根据您的回答,我将我的方法parseKmlString()更改为parse方法,类似于var parse=function(URL){//如果需要,可以处理一个或多个kml文档(typeof URL==='string'){//Single KML document URL=[URL];}……现在我得到了“无法检索”这是geoxml3.js中的一个日志条目。我很确定这只是将kml放在项目中正确位置的问题,希望它能工作。我尝试过将它放在几个地方,包括我的java源文件所在的包。现在我已经将它移到src/main/resources文件夹中,并使用“/resources/cta.kml”访问它加载资源失败:服务器响应的状态为404(未找到)HTTP错误404检索/resources/cta.kml无法检索/resources/cta.kml(geoxml.js的日志)如果手动调用文件,哪个url会响应该文件(浏览器地址字段)你能看看这里吗:如果我能让它工作,我甚至不需要在我的机器上保留KML文件..只是KML文本..URL没有改变。我设法直接使用KML文件内容在地图上放置一个地点标记:showKml(jsoParser,“我的办公室这是我办公室的位置。21.0000,78.0000”);