2017-02-03 22 views
0

내 프로젝트에서 OSMdroid 라이브러리를 사용하여 내 회사의 로컬 서버에서지도 타일 (선과 배경이없는 모양)을 표시합니다. 것은 오프라인 모드에서 응용 프로그램을 사용하고지도를 탐색하면 캐시에없는 타일에 대한 빈 회색 격자 배경을 보여줍니다, 그리고 빈 배경 이미지/타일 빈 회색 격자를 변경하고 싶습니다.OSMdroid - 사용 가능한 타일이 없을 때 빈 격자 배경을 대체하십시오. (오프라인)

나는 다음이가 달성하기 위해 찾은 유일한 해결 방법 :

다음 Color.WHITE에 타일 오버레이 및 설정 setLoadingBackgroundColor 및 setLoadingLineColor을 추가하고는 OnlineTileSourceBase에서 로컬 서버에서 TileSource을 설정합니다. 이 방법이 성능이 좋지 않다는 것을 알고 있습니다. 더 좋은 방법이 있습니까? 미리 감사드립니다!

final ITileSource tileSource = new OnlineTileSourceBase(...) 
    { 
     @Override 
     public String getTileURLString(MapTile aTile) { 
      return getBaseUrl() + aTile.getX() + "+" + aTile.getY() + "+" + aTile.getZoomLevel(); 
     } 
    }; 

    tileProvider = new MapTileProviderBasic(context, tileSource); 

    tilesOverlay = new TilesOverlay(tileProvider , context); 
    tilesOverlay.setLoadingBackgroundColor(Color.WHITE); 
    tilesOverlay.setLoadingLineColor(Color.WHITE); 

    this.map.getOverlays().add(tilesOverlay); 
    this.map.setTileSource(tileProvider.getTileSource()); 

    map.invalidate(); 

답변

1

코드는 보조 타일 오버레이를 추가하는 예입니다. 지도 이미지 위에 다른 래스터 그래픽 오버레이가 필요할 때 유용합니다.

기존 및 기본 타일 오버레이의 로딩 선과 배경을 변경할 수도 있습니다. 이것은 당신이지도 이미지 위에 표시 할 사실

mMapView.getOverlayManager().getTilesOverlay().setLoadingBackgroundColor(Color.TRANSPARENT); mMapView.getOverlayManager().getTilesOverlay().setLoadingLineColor(Color.TRANSPARENT);

+0

여러 오버레이를 가야한다, 그 트릭을했다! 대단히 감사합니다! –