2017-03-04 154 views
0

我已经在Geoserver中缓存了地图块,我需要在我的android应用程序中通过OSMDroid显示地图。我已经与我的OpenLayers web应用程序尝试过了,工作正常,像这样:从OSMDroid的Geoserver中显示地图

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瓷砖源,它的工作原理......但我不是:/你能告诉我我做错了什么吗?由于

编辑: 我editted我funcition getTileURLString这个,仍然没有工作:

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

所以我试图从网址日志文件中brwser,我得到了这一点: enter image description here

和当我试图URL在末端“png格式”我得到这个: enter image description here

机器人工作室终端打印:

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

ok我把它和我有新的日志...所以我编辑问题。 –

回答

0

的GeoServer是说,它不知道如何处理类似的请求:

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

这是因为你没有指定的图像格式,所以像这样的URL应该工作:

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

仍然不起作用,我再次更新我的问题,并添加屏幕什么geoserver返回时,我打电话给这个网址。 –