2017-02-03 1 views
1

나는 자산에서 sqlite 타일을 사용하여 오프라인 맵을 만들려고했습니다. sqlite 파일을 osmdroid 폴더로 이동하지만 맵의 일부만로드합니다.sqlite 타일에서 OSMDroid 회색 영역

MOBAC을 사용하여 sqlite 파일을 만들었습니다. 동일한 또는 다른 레이어를 사용하여 다른 줌 레벨을 선택하고 PNG로 다시 그려야했습니다.

이지도는 다음 코드를 사용하여 만들어집니다 :

map = (MapView) findViewById(R.id.mapview); 
    map.setTileSource(TileSourceFactory.MAPNIK); 
    MyLocationNewOverlay mLocationOverlay = new MyLocationNewOverlay(new GpsMyLocationProvider(StepActivity.this), map); 
    mLocationOverlay.enableMyLocation(); 
    map.getOverlays().add(mLocationOverlay); 
    map.setBuiltInZoomControls(true); 
    map.getController().setZoom(15); 
    map.setClickable(false); 
    map.setUseDataConnection(false); 
    map.setMinZoomLevel(15); 
    map.setMaxZoomLevel(18); 

하지만 맵이로드 될 때 (정상이라면 내가 아는 해달라고 몇 번을 보라). 대부분의지도가 회색으로 표시되어 일부를로드하려면 여러 번 확대/축소해야합니다.

모든 보이는지도를로드하는 방법을 모르겠다.

답변

1

MOBAC에 사용 된 타일 원본의 "이름"은 "MAPNIK"와 일치해야합니다. sqlite3 명령 줄 도구를 사용하거나 firefox 용 sqlite 관리자 플러그인을 사용하여 설정 한 내용을 확인할 수 있습니다.

select * from tiles 당신이 mobac에서 줌 레벨 15을 선택 확신이

귀하의 예제 코드도 15에 줌 레벨을 설정해야합니까? 앱이 데이터베이스에있는 위치로 시작할 때 기본 위도/경도를 설정하면 도움이 될 수 있습니다. 이러한 확대/축소 수준의 콘텐츠가 너무 크지 않으면 확대/축소 수준 0-9를 포함하면 도움이됩니다.

시작할 때 자산이/sdcard로 복사되는 것이 지연 될 수 있습니다. osmdroid가 맵보기 (setContentView)를 작성하기 전에 찾을 수있는 데이터베이스가 있는지 확인하고자 할 수도 있습니다. 이것이 옵션이 아니면 복사 작업이 완료된 후 reset지도 타일 제공자가 될 수 있습니다. mapView.setTileProvider(new MapTileProviderBasic(context));

+1

'mapView.setTileProvider (새 MapTileProviderBasic (컨텍스트)) '작업을 수행하십시오! 고맙습니다. setTileProvider는 정확히 무엇입니까? 나는 그것에 대해 많은 정보를 찾지 못한다. – Wiicolas

+0

타일 공급자는 모든 타일 로딩을 수행하고 디스플레이 (온라인, 오프라인, 캐싱 등)를위한 디스플레이를 찾는 다양한 메커니즘을 집계합니다. 초기화 할 때 오프라인 타일 아카이브를 검색합니다. 따라서 수신 거부하면 스캔이 시작됩니다. – spy

관련 문제