这是我在 gwt/gxt google maps api v3 中绘制本地 kml 文件的方式 在 Internet 上查找和下载 geoxml3.js 和 ProjectedOverlay.js。在你的 html 中放:<
脚本类型="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 需要连接 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) {
}