javascript和GWT代码之间的通信
我已经使用GoogleMapsV3API为GWT创建了一个地图。我试图在这个地图上显示一个kml,但这是不可能的,因为它存储在本地。所以,我尝试使用geoxml3来解析我的本地kml 我需要javascript代码来“查看”我使用GWT创建的地图。我该怎么做 我使用 map=GoogleMap.create(Document.get().getElementById(“map_canvas”),myOptions); (map_canvas是我的html页面中的一个div)javascript和GWT代码之间的通信,javascript,google-maps,gwt,Javascript,Google Maps,Gwt,我已经使用GoogleMapsV3API为GWT创建了一个地图。我试图在这个地图上显示一个kml,但这是不可能的,因为它存储在本地。所以,我尝试使用geoxml3来解析我的本地kml 我需要javascript代码来“查看”我使用GWT创建的地图。我该怎么做 我使用 map=GoogleMap.create(Document.get().getElementById(“map_canvas”),myOptions); (map_canvas是我的html页面中的一个div) 我想调用一个Java
我想调用一个Javascript函数来解析KML文件并将其显示在地图上。我知道如何调用JS函数,但我不知道在它的主体中写什么。,,这里是从GWT文档中编写JSNI的基础知识。这绝对有助于您编写函数体 这是我在gwt/gxt google maps api v3中绘制本地kml文件的方式 在internet上查找并下载geoxml3.js和ProjectedOverlay.js。 在html中输入: 添加一些过程以将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需要连接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作为字符串传递给Javascript,然后用GeoXml解析它。您看到了吗?是的,这就是我正在使用的。我设法展示了我的kml,从我的gwt项目中调用了一个js函数。但是,我看不到地图,只能看到kml的形状。太多了!看起来是一个很好的例子,但不确定为什么它对我不起作用。项目构建很好,但KML不会出现。。