1

GWT アプリケーションで Google マップを使用したいと考えています。問題は、gwt-maps API がサポートするのは Google Maps API バージョン 2 のみであり、通常のマップ API はバージョン 3 であるということです。したがって、基本的にやりたいことは、GWT コードから標準の js マップ ライブラリを使用することですが、これは機能しません。作業:

public void onModuleLoad() {
        buildMap();
    }



    private final native void buildMap()/*-{



         <script type="text/javascript"
    src="http://maps.googleapis.com/maps/api/js?sensor=false">
    </script>
            var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
      zoom: 8,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"),
        myOptions);

        }-*/;

問題は、onModuleLoad が body.onload と同等ではないことにあると思われます。どう思いますか?

4

3 に答える 3

1

MapsAPIのバージョン3のオープンソースラッパーであるgwt-google-maps-v3を確認する必要があります。このプロジェクトはgwt-google-apisと統合されているため、技術的に非推奨になっていますが、少なくとも正しい方向に進むことができます。

于 2011-09-23T13:03:37.787 に答える
1

わかりました、私は解決策を見つけました。

私が最初にしたことは、マップのdivを保持するUIBinderを作成することでした。

<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
    xmlns:g="urn:import:com.google.gwt.user.client.ui">
    <div id="map_canvas" style="width:100%; height:100%"></div>
</ui:UiBinder> 

そして、これが残りのコードです:

public void onModuleLoad() {
    mapCanvas canvas = new mapCanvas();
    Document.get().getBody().appendChild(canvas.getElement());
    buildMap();
}   


private final native void buildMap()/*-{
    var latlng = new $wnd.google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
      zoom: 8,
      center: latlng,
      mapTypeId: $wnd.google.maps.MapTypeId.ROADMAP
    };
    var map = new $wnd.google.maps.Map($doc.getElementById("map_canvas"), myOptions);
}-*/;
于 2011-09-23T17:14:05.987 に答える
1

これを行うためのアプリ全体があります。https://github.com/dartmanx/mapmaker/tree/0.5.2でプロジェクトをチェックしてください。

Google マップの次のユーティリティ クラスに特に注意してください。

https://github.com/dartmanx/mapmaker/blob/0.5.2/src/main/java/org/jason/mapmaker/client/util/GoogleMapUtil.java

それが役立つことを願って、私はそのJSNIで多くの苦痛を経験しました.

ジェイソン

于 2011-09-23T18:41:58.017 に答える