首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在OSMDroid中显示地理服务器中的地图

在OSMDroid中显示地理服务器中的地图
EN

Stack Overflow用户
提问于 2017-03-04 21:40:23
回答 1查看 1.2K关注 0票数 0

我已经在Geoserver中缓存了瓦片,我需要在我的安卓应用程序中通过OSMDroid显示地图。我已经用OpenLayers在我的web应用程序中尝试了它,并且工作得很好,如下所示:

代码语言:javascript
复制
 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%3Av_slovensko_group@EPSG%3A3857@png/{z}/{x}/{-y}.png'
            })
        })

所以现在我需要在Android中显示它。我已经为自定义磁贴源创建了类:

代码语言:javascript
复制
public class GeoserverTileSource extends OnlineTileSourceBase {

public static String[] TILE_URL = {"http://10.0.2.2:8080/geoserver/gwc/service/tms/1.0.0/Bachelor%3Av_slovensko_group@EPSG%3A3857@png"};

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类:

代码语言:javascript
复制
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日志打印如下:

代码语言:javascript
复制
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%3Av_slovensko_group@EPSG%3A3857@png/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%3Av_slovensko_group@EPSG%3A3857@png/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%3Av_slovensko_group@EPSG%3A3857@png/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%3Av_slovensko_group@EPSG%3A3857@png/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%3Av_slovensko_group@EPSG%3A3857@png/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%3Av_slovensko_group@EPSG%3A3857@png/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%3Av_slovensko_group@EPSG%3A3857@png/18/641/279

geoserver打开geoserver调试日志:http://pastebin.com/wTw5ASDC

首先,我尝试了Mapnik瓦片源码,它工作…但是我不能:/你能告诉我我做错了什么吗?谢谢

编辑:我已经编辑了我的funcition,但仍然不能工作:

代码语言:javascript
复制
@Override
public String getTileURLString(MapTile aTile) {
    return TILE_URL[0] + "/" + aTile.getZoomLevel() + "/" + aTile.getX() + "/" + aTile.getY() + ".png";
}

所以我试着从brwser的日志文件中获取url,得到的结果是:

当我尝试在url末尾加上".png“时,我得到的结果是:

android studio终端打印如下:

代码语言:javascript
复制
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?因为正如你在图片上看到的,结构名称略有不同,并且它们包含下划线。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-05 19:14:39

GeoServer表示,它不知道如何处理这样的请求:

代码语言:javascript
复制
http://10.0.2.2:8080/geoserver/gwc/service/tms/1.0.0/Bachelor%3Av_slovensko_group@EPSG%3A3857@png/11/9/3

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

代码语言:javascript
复制
http://10.0.2.2:8080/geoserver/gwc/service/tms/1.0.0/Bachelor%3Av_slovensko_group@EPSG%3A3857@png/11/9/3.png
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42596691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档