2017-02-17 12 views
1

Я хочу использовать два фрагмента карты, каждый из которых имеет отдельный фрагмент, бок о бок в действии. Левая карта будет отображать обзор по определенной области, правый - в конкретную точку.Используйте два osmdroid Map Views в одном виде

Проблема у меня в том, что только первая (слева) фрагмент карты быть правильно показано, второй (справа) один показывает карту мира: Screenshot

Zooming не работает на праве карта.

Вот часть кода я использую:

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); 
} 

Если изменить либо один из фрагментов к фрагменту GoogleMaps, то osmdroid карта загружает правильно.

Любые идеи, почему это происходит и как я могу это исправить? Я использую новейшую версию osmdroid от gradle (v5.6.4)

Заранее спасибо.

EDIT: Я изменил смену переменной, но она по-прежнему не работает.

ответ

0

Так что я нашел решение. Проблема заключалась в том, что MapView находится внутри фрагмента, а фрагмент - это пользовательский класс, в котором были жестко закодированные идентификаторы и макеты. Решение, которое работало для меня, - это дублирование пользовательского класса фрагмента и редактирование идентификатора и макета. Затем в MainActivity мне пришлось изменить объявление varaible и литье из OsmFragment в OsmFragmentDetail Теперь обе карты показывают желаемый контент.

0

Вы должны создать отдельные TilesOverlays для разных видов карты. В настоящее время вы используете одиночный оверлей в двух фрагментах, это не сработает.

+0

Спасибо за ваш ответ. Я изменил код, чтобы использовать разные TilesOverlays, но ничего не изменил. Затем я изменил каждую переменную на разные объявления для обеих карт, и это тоже не помогло. Любые другие предложения? –