1

我已经为 GWT 使用 google maps v3 api 创建了一个地图。我试图在这张地图上显示一个 kml,但这是不可能的,因为它存储在本地。所以,我正在尝试使用 geoxml3 来解析我的本地 kml。

我需要 javascript 代码才能“看到”我使用 GWT 创建的地图。我怎样才能做到这一点?

我使用创建地图

地图 = GoogleMap.create(Document.get().getElementById("map_canvas"), myOptions); (map_canvas 是我的 html 页面中的一个 div)

我想调用一个 Javascript 函数来解析 KML 文件并将其显示在我的地图上。我知道如何调用 JS 函数,但我不知道在它的主体中写什么。,,

4

2 回答 2

2

这是我在 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) {

}
于 2013-10-26T20:36:14.963 回答
0

这是来自 GWT 文档的 JSNI 编码基础知识。这绝对可以帮助您编写函数的主体。

于 2012-05-18T11:09:41.160 回答