1

GWT 用の google maps v3 api を使用してマップを作成しました。このマップに kml を表示しようとしていますが、ローカルに保存されているため、これは不可能です。そのため、ローカル kml を解析するために geoxml3 を使用しようとしています。

GWT を使用して作成したマップを「表示」できるようにするには、javascript コードが必要です。これどうやってするの?

を使用してマップを作成します

map = GoogleMap.create(Document.get().getElementById("map_canvas"), myOptions); (map_canvas は、私の html ページの div です)

KML ファイルを解析してマップ上に表示するために、Javascript 関数を呼び出したいと考えています。JS関数の呼び出し方はわかったけど、本体に何を書けばいいのかわからない、、

4

2 に答える 2

2

これは、gwt/gxt google maps api v3 でローカル kml ファイルをプロットした方法です。インターネットで geoxml3.js と ProjectedOverlay.js を検索してダウンロードします。あなたのhtmlに:<

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 は 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 に答える