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을 시도하고 나는이있어 :
및 끝에 ".png"라는 URL을 넣었을 때 나는 이것을 얻었다 :
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을 호출 할 수 있습니까? 당신이 그림에서 볼 수 있듯이 구조 이름은 약간 다르며 밑줄을 포함합니다.
geoserver 로깅 수준을 개발자에게 다시 설정하고 다시 시도하십시오. –
확인해 보니 새 로그가 생겼습니다 ... 그래서 질문을 편집했습니다. –