GWT:基本KML渲染不工作
我已经将geomml3.js添加到我的GWT项目中,并将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 });
添加到我的主机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”);