2017-03-04 13 views
0

Geoserver에서 타일을 캐쉬했고 OSMDroid를 통해 안드로이드 응용 프로그램에지도를 표시해야합니다. OpenLayers로 웹 응용 프로그램을 사용해 보았고 다음과 같이 잘 작동합니다.Geoserver in OSMDroid의지도 표시

var map = new ol.Map({ 
    target: 'map', 
    layers: [ 
     new ol.layer.Tile({ 
      source: new ol.source.XYZ({ 
       url: 'http://localhost:8080/geoserver/gwc/service/tms/1.0.0/Bachelor%[email protected]%[email protected]/{z}/{x}/{-y}.png' 
      }) 
     }) 

이제 Android에서 표시해야합니다. 나는 사용자 지정 타일 소스 클래스를 만들었습니다

public class GeoserverTileSource extends OnlineTileSourceBase { 

public static String[] TILE_URL = {"http://10.0.2.2:8080/geoserver/gwc/service/tms/1.0.0/Bachelor%[email protected]%[email protected]"}; 

public GeoserverTileSource(String aName, int aZoomMinLevel, int aZoomMaxLevel, int aTileSizePixels, String aImageFilenameEnding, String[] aBaseUrl) { 
    super(aName, aZoomMinLevel, aZoomMaxLevel, aTileSizePixels, aImageFilenameEnding, aBaseUrl); 
} 

@Override 
public String getTileURLString(MapTile aTile) { 
    return TILE_URL[0] + "/" + aTile.getZoomLevel() + "/" + aTile.getX() + "/" + aTile.getY(); 
} 

}

을 여기에 내 MainActivity 클래스입니다 :

public class MainActivity extends AppCompatActivity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Context ctx = getApplicationContext(); 
    //important! set your user agent to prevent getting banned from the osm servers 
    Configuration.getInstance().load(ctx, PreferenceManager.getDefaultSharedPreferences(ctx)); 
    setContentView(R.layout.activity_main); 

    MapView map = (MapView) findViewById(R.id.map); 

    GeoserverTileSource source = new GeoserverTileSource("geoserver", 10, 18, 256, ".png", GeoserverTileSource.TILE_URL); 

    map.setTileSource(source); 
    //map.setTileSource(TileSourceFactory.MAPNIK); 
} 


public void onResume(){ 
    super.onResume(); 
    Configuration.getInstance().load(this, PreferenceManager.getDefaultSharedPreferences(this)); 
} 

}

Geoserver 로그 인쇄이 :

2017-03-04 14:29:20,451 ERROR [geowebcache.GeoWebCacheDispatcher] - null http://10.0.2.2:8080/geoserver/gwc/service/tms/1.0.0/Bachelor%[email protected]%[email protected]/18/642/281 
2017-03-04 14:29:20,460 ERROR [geowebcache.GeoWebCacheDispatcher] - null http://10.0.2.2:8080/geoserver/gwc/service/tms/1.0.0/Bachelor%[email protected]%[email protected]/18/639/281 
2017-03-04 14:29:20,460 ERROR [geowebcache.GeoWebCacheDispatcher] - null http://10.0.2.2:8080/geoserver/gwc/service/tms/1.0.0/Bachelor%[email protected]%[email protected]/18/640/280 
2017-03-04 14:29:20,472 ERROR [geowebcache.GeoWebCacheDispatcher] - null http://10.0.2.2:8080/geoserver/gwc/service/tms/1.0.0/Bachelor%[email protected]%[email protected]/18/637/281 
2017-03-04 14:29:20,473 ERROR [geowebcache.GeoWebCacheDispatcher] - null http://10.0.2.2:8080/geoserver/gwc/service/tms/1.0.0/Bachelor%[email protected]%[email protected]/18/638/281 
2017-03-04 14:29:20,480 ERROR [geowebcache.GeoWebCacheDispatcher] - null http://10.0.2.2:8080/geoserver/gwc/service/tms/1.0.0/Bachelor%[email protected]%[email protected]/18/639/280 
2017-03-04 14:29:20,480 ERROR [geowebcache.GeoWebCacheDispatcher] - null http://10.0.2.2:8080/geoserver/gwc/service/tms/1.0.0/Bachelor%[email protected]%[email protected]/18/641/279 

geoserver가 geoserver 디버깅 로그를 올린 후 : http://pastebin.com/wTw5ASDC

처음에는 Mapnik 타일 소스를 시도했지만 작동하지 않지만 .../내 잘못을 말해 줄 수 있습니까? 감사합니다

편집 : 나는이 내 funcition의 getTileURLString을 편집 해하고 아직도 작동했습니다

@Override 
public String getTileURLString(MapTile aTile) { 
    return TILE_URL[0] + "/" + aTile.getZoomLevel() + "/" + aTile.getX() + "/" + aTile.getY() + ".png"; 
} 

그래서 난 brwser에 로그 파일에서 URL을 시도하고 나는이있어 : enter image description here

및 끝에 ".png"라는 URL을 넣었을 때 나는 이것을 얻었다 : enter image description here

android studio terminal 인쇄물 :

W/OsmDroid: Problem downloading MapTile: /10/651/444 HTTP response: 
W/OsmDroid: Problem downloading MapTile: /10/649/444 HTTP response: 
W/OsmDroid: Problem downloading MapTile: /10/648/445 HTTP response: 
W/OsmDroid: Problem downloading MapTile: /10/650/445 HTTP response: 
W/OsmDroid: Problem downloading MapTile: /10/649/445 HTTP response: 

osmdroid가 잘못된 매개 변수를 사용하여 url을 호출 할 수 있습니까? 당신이 그림에서 볼 수 있듯이 구조 이름은 약간 다르며 밑줄을 포함합니다. enter image description here

+0

geoserver 로깅 수준을 개발자에게 다시 설정하고 다시 시도하십시오. –

+0

확인해 보니 새 로그가 생겼습니다 ... 그래서 질문을 편집했습니다. –

답변

0

GeoServer는이 같은 요청을 처리하는 방법을 알고하지 않습니다 말하고있다 :

: 당신이 그렇게이 같은 URL이 작동한다, 이미지 형식을 지정하지 않았기 때문에

http://10.0.2.2:8080/geoserver/gwc/service/tms/1.0.0/Bachelor%[email protected]%[email protected]/11/9/3 

입니다

http://10.0.2.2:8080/geoserver/gwc/service/tms/1.0.0/Bachelor%[email protected]%[email protected]/11/9/3.png 
+0

여전히 작동하지 않습니다. 내 질문을 다시 업데이트하고이 URL을 호출 할 때 geoserver가 반환하는 화면을 추가합니다. –