2017-02-17 59 views
1

我想在活動中並排使用兩個地圖片段,每個都有不同的片段。計劃在左側的地圖上顯示特定區域的概覽,右側的地圖將放大到特定的點。在一個活動中使用兩個osmdroid地圖視圖

時遇到的問題是,僅第一(左)地圖片段被正確所示,第二(右)示出了一個在世界地圖: Screenshot

縮放沒有在右邊工作地圖。

這裏是我正在使用的代碼的一部分:

private void initializeMap() 
{  
    MapTileProviderBasic tileProviderOSM = new MapTileProviderBasic(getApplicationContext()); 
    ITileSource tileSourceOSM = new XYTileSource("OpenFireMap", null, 1, 18, 256, ".png", new String[]{"http://openfiremap.org/hytiles/"}); 
    tileProviderOSM.setTileSource(tileSourceOSM); 
    TilesOverlay tilesOverlayOSM = new TilesOverlay(tileProviderOSM, this.getBaseContext()); 
    tilesOverlayOSM.setLoadingBackgroundColor(Color.TRANSPARENT); 

    OsmFragment frag = (OsmFragment) getFragmentManager().findFragmentById(R.id.osmMap); 
    osmMap = frag.getMap(); 
    osmMap.setMultiTouchControls(true); 
    osmMap.getOverlays().add(tilesOverlayOSM); 

    MapTileProviderBasic tileProviderOSMDetail = new MapTileProviderBasic(getApplicationContext()); 
    ITileSource tileSourceOSMDetail = new XYTileSource("OpenFireMap", null, 1, 18, 256, ".png", new String[]{"http://openfiremap.org/hytiles/"}); 
    tileProviderOSMDetail.setTileSource(tileSourceOSMDetail); 
    TilesOverlay tilesOverlayOSMDetail = new TilesOverlay(tileProviderOSMDetail, this.getBaseContext()); 
    tilesOverlayOSMDetail.setLoadingBackgroundColor(Color.TRANSPARENT); 

    OsmFragment fragDetail = (OsmFragment) getFragmentManager().findFragmentById(R.id.osmMapDetail); 
    osmMapDetail = fragDetail.getMap(); 
    osmMapDetail.setMultiTouchControls(true); 
    osmMapDetail.getOverlays().add(tilesOverlayOSMDetail); 
} 

如果更改片段中的任一個到Google地圖片段,所述osmdroid地圖加載正確。

任何想法,爲什麼發生這種情況,我該如何解決它?我使用gradle(v5.6.4)的最新osmdroid版本(v5.6.4)

在此先感謝。

編輯: 我改變了變量declation,但它仍然不起作用。

回答

0

所以我找到了解決方案。問題是,MapView在一個片段內,片段是一個自定義的類,它具有硬編碼的ID和佈局。爲我工作的解決方案是複製自定義片段類並編輯ID和佈局。然後在MainActivity中,我必須將變化聲明和演員從OsmFragment更改爲OsmFragmentDetail 現在這兩個地圖都顯示了所需的內容。

0

您必須爲不同的地圖視圖創建單獨的TilesOverlay。目前,您在兩個片段中使用單個疊加層,但這不起作用。

+0

感謝您的回答。我改變了代碼來使用不同的TilesOverlay,但它沒有改變任何東西。然後,我將每個變量都更改爲兩個地圖的不同聲明,但它也沒有幫助。 還有其他建議嗎? –

相關問題