Как добавить объект Google Maps из кода GWT? - PullRequest
1 голос
/ 23 сентября 2011

Я хотел бы использовать карты Google в своем приложении GWT. Дело в том, что API gwt-maps поддерживает только API Карт Google версии 2, а API регулярных карт - версию 3. Поэтому в основном я хочу использовать стандартную библиотеку js maps из моего кода GWT, но это не так. т работа:

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. Что ты думаешь?

Ответы [ 3 ]

1 голос
/ 23 сентября 2011

Хорошо, я нашел решение.

Первое, что я сделал, это создал UIBinder для хранения div карты:

<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);
}-*/;
1 голос
/ 23 сентября 2011

У меня есть целое приложение, чтобы сделать это. Проверьте проект на 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.

Jason

1 голос
/ 23 сентября 2011

Вы должны проверить gwt-google-maps-v3 , оболочку с открытым исходным кодом для версии 3 API Карт.Технически проект устарел, потому что его объединяют с gwt-google-apis, но он, по крайней мере, выведет вас на правильный путь.

...