2017-02-17 90 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,但它没有改变任何东西。然后,我将每个变量都更改为两个地图的不同声明,但它也没有帮助。 还有其他建议吗? –

相关问题