我使用google maps v3 api为GWT创建了一张地图。我试图在此地图上显示kml,但这是不可能的,因为它存储在本地。所以,我正在尝试使用geoxml3来解析我的本地kml。
我需要javascript代码才能“看到”我使用GWT创建的地图。我怎么能这样做?
我使用
创建地图map = GoogleMap.create(Document.get()。getElementById(“map_canvas”),myOptions); (map_canvas是我的html页面中的div)
我想调用Javascript函数来解析KML文件并将其呈现在我的地图上。我知道如何调用JS函数,但我不知道在其体内写什么。,,
答案 0 :(得分:2)
这是我在gwt / gxt google maps api v3中绘制本地kml文件的方式 在互联网上查找并下载geoxml3.js和ProjectedOverlay.js。 在你的html put:<
script type =“text / javascript” SRC = 'YourServicePath / geoxml3.js' >
添加一些程序来将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需要连接谷歌地图,我们会在连接谷歌地图后注入它。
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) {
}
答案 1 :(得分:0)
以下是GWT文档中JSNI的编码基础知识。这绝对可以帮助你如何编写函数体。