2017-02-19 31 views
1

2-3周後,我一直在使用我的應用程序開發一個真正的Android設備。到目前爲止,它一直在模擬器上顯示設備上的Google Maps和OSM。本地地圖在Android設備的LayeredLayout中未顯示,代碼爲1

今天我做了一些修改 - 比如在地圖上面添加一個按鈕,然後發送構建。在發送構建之前更新CN1和CN1libs。現在當我在設備上測試它時,沒有顯示地圖,我得到404:未找到。如果您詢問模擬器中的行爲,它仍然按預期工作(但它使用MapComponent使用OSM)。

這裏是我的代碼打下地圖下來(地圖初始化並沒有改變):

Container mapWithButton = LayeredLayout.encloseIn(BorderLayout.centerCenter(googleMap), 
FlowLayout.encloseRight(locateMeButton)); 
this.add(BorderLayout.CENTER, mapWithButton); 

我有看MapContainer history但最近的變化只涉及longPressListener。請注意,原生地圖應用在設備上運行良好。通過DDMS調試沒有幫助(屏幕上出現相同的錯誤)。

我忘了更新或添加構建提示嗎?

任何幫助表示讚賞。

+0

這可能與許可或您使用證書的變化,本地Google地圖綁定到特定的證書和權限,並且可能在Google雲設置中或導致此失敗的應用中更改了某些內容。調試此方法的方法是使用電纜連接設備,然後查看ddms/logcat輸出應該在哪裏列出 –

+0

沒有改變任何東西,如果我'this.add(BorderLayout.CENTER,googleMap);'(而不是使用LayeredLayout)然後地圖再次顯示。 – HelloWorld

回答

1

最終,404錯誤與地圖無關,但添加了MapListener,它試圖從移動地圖時尚未提供的地址獲取數據。

然而,實際上製作地圖的實際情況是,它需要通過BorderLayout.center()而不是BorderLayout.centerCenter()替代方案。

所以我也沒有解釋所提供的只是將下面的代碼將按預期顯示地圖和按鈕(注意的BorderLayout.center代替BorderLayout.centerCenter

Container mapWithButton = LayeredLayout.encloseIn(
             BorderLayout.center(googleMap), 
             FlowLayout.encloseRight(locateMeButton)); 

this.add(BorderLayout.CENTER, mapWithButton); 
+1

'BorderLayout.centerCenter()'給出了組件的首選大小,它可以是零,因爲本地代碼在它自己的線程上工作。 'BorderLayout.center()'將起作用。 –

相關問題