Re: [問題] 請問在GWT上用Google Map API

作者: JohnnyDell (強尼戴爾)   2014-05-17 20:18:27
經過一陣try and wait compile後發現,其實是因為沒有load js
要在project.gwt.xml中加上<script>的tag去load Google map js api
可是呢 不知為啥我的project compile說不support script tag..
只能在project.html去加,最終加上去後算是成功了一半
首先是這樣做以後地圖確實是出現了 可以隨意的放進panel
再把panel隨意的丟進window 都OK沒有問題 但是第一次的onClick()是正確
出現地圖 且中心點是所給的location 而且有一個marker並有info window
但再次點button去叫出該地圖卻出現中心點跑掉的現象..
就算是有 map.checkResizeAndCenter(); 也是一樣的情形
此外 以下的code是 gwt-map.1.1.1.jar 的語法
要inherits的是 com.google.gwt.maps.GoogleMap
而<script>要load的也必須是version 2的Google Map js
若是要使用v3的Google Map js 必須改用 gwt-map.3.8.1.jar
而要inherits的會變成 com.google.maps.gwt.GoogleMap
當然<script>的URL也必須是v3的版本 此外code的語法亦不同
加入panel的方法是:
GoogleMap gMap = GoogleMap.create(panel.getElement(), options);
其中options是 MapsOptions options = new MapsOptions();
可惜的是在我的project加上去地圖始終不會出現..
不曉得是否是因為GWT版本的問題就是
※ 引述《PsMonkey (痞子軍團團長)》之銘言:
: ※ 引述《JohnnyDell (強尼戴爾)》之銘言:
: : 真是不好意思 剛剛發文發太急 下方連結重新排版一下
: : http://paste.ideaslabs.com/show/Q0ThysUrSF
: : 這是mapWindowForm.class
: 在這個版本的 code 當中
: X [嗶] X [嗶],我完全看不出來 map 有加到 DOM 的可能
: 上一個版本你加了三次 map
: (萬一是你自己 comment 沒 mark 乾淨不要怪人)
: 這次你指 new 完 MapWidget() 之後就放著沒再幹麼?
: 所以這到底是...... WT...
: 我只能懇求上天,你下面這些方法都是各自獨立測試的
: : 下方這些是大概一些試過的方式
: : 1. Panel panel = new FormPanel(); panel.add(map); add(panel);
: 所以 panel、mapWindowForm、DOM 之間的關係是?
: : 2. final DockLayoutPanel dock = new DockLayoutPanel(Unit.PX);
: : dock.addNorth(map, 500);
: : RootLayoutPanel.get().add(dock);
: 這個跟 mapWindowForm 的關係是?
: 然後這個執行結果是?
: : 3. add(map, new AbsoluteData(35,35));
: : 4. add(panel);
: (我不想再重複寫一樣的話了)
: (還有那個神 AbsoluteData())
: : 另外就是 在第24行 if (!Maps.isLoaded()) 這裡檢查了MapApi有沒有被load
: : 但是我發現我第一次點該按鈕的時候會跳出 25行的Window.alert
: : 可是之後再點就不會 refresh web page後第一次點又跳出Window.alert
: : 所以我也懷疑是否MapApi其實一直並沒有被load in成功
: : 在Maps.loadMapsApi()的第二個參數應該是API version
: 因為 Map API 的 js 已經被 cache 了
: 不然你每次 refresh 之前都清除 cache
: 雖然我沒實際測過,不過我可以先壓 500P 每次都會跳 alert
: 其他我不想回了,只能再講一次,請搞清楚你到底在幹麼
: 有任何不確定的東西,要嘛看 source code
: 要嘛(如果程度跟我一樣 low)就寫測試 code 去驗證
: 如果我也懷疑起什麼 V2 還是三小朋友的可能性
: 那麼
: public class FooEP extends EntryPoint {
: @Override
: public void onModuleLoad() {
: Maps.loadMapsApi("*****", "2", false, new Runnable() {
: public void run(){
: buildUi();
: }
: });
: LatLng location = mockLatLng();
: private void buildUi() {
: final MapWidget map = new MapWidget(location, 2);
: map.setSize("500px", "500px"); //奸笑
: RootPanel.get().add(map);
: }
: }
: 其餘 BJ4
: ====
: 我得了一種看到 GWT 文章不回就會死的病
: 只是我回了之後覺得更想死

Links booklink

Contact Us: admin [ a t ] ucptt.com