【问题标题】:OSMDroid app using custom ARCGis tile server - tiles are shuffled使用自定义 ARCGis 磁贴服务器的 OSMDroid 应用程序 - 磁贴被打乱
【发布时间】:2016-09-02 12:05:25
【问题描述】:

我正在使用 OSMDroid 开发一个安卓地图应用程序。我正在尝试使用完全独立于 google 和/或 bing api 的免费自定义航拍图像。请不要提出任何使用其映射 API 的解决方案。

我已经设法通过包含以下代码来显示卫星图像:

mapView.setTileSource(TileSourceFactory.MAPQUESTAERIAL);

但是,平铺服务器不提供超过 11 倍缩放的平铺,我需要比这更近一些(比如 15-16?)。

使用 ARCGis 瓦片服务器,我设法将卫星图像显示到 16 层缩放级别,但瓦片被打乱了。

mapControl = (MapController) mapView.getController();
mapControl.setZoom(11);
String[] urlArray = {"http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/"};
mapView.setTileSource(new XYTileSource("ArcGisOnline", null, 0, 18, 256, ".png",urlArray ));

底图瓦片被打乱了,不对应纬度/经度,但叠加是可以的。

【问题讨论】:

    标签: android arcgis osmdroid esri


    【解决方案1】:

    图块服务器可能使用不同的方案来检索图块。尝试翻转 X 和 Y 坐标。 Slippy 地图服务器 (osm) 使用 Z/X/Y.ext 格式。 ArgGis 和其他几个使用 Z/Y/X.ext 格式。所有其他坐标都相同。这意味着解决方案很简单,重写 getTileURLString 方法并以服务器想要的任何格式提供坐标。

    Osmdroid 有一个这样做的例子。

    https://github.com/osmdroid/osmdroid/blob/master/OpenStreetMapViewer/src/main/java/org/osmdroid/samplefragments/SampleCustomTileSource.java

    相关位一码本

    mMapView.setTileSource(new OnlineTileSourceBase("USGS Topo", 0, 18, 256, "", 
               new String[] { "http://basemap.nationalmap.gov/ArcGIS/rest/services/USGSTopo/MapServer/tile/" }) {
               @Override
               public String getTileURLString(MapTile aTile) {
                    return getBaseUrl() + aTile.getZoomLevel() + "/" + aTile.getY() + "/" + aTile.getX()
                + mImageFilenameEnding;
               }
          });
    

    您还需要在此更改后清除缓存,因为它有错误的坐标

    【讨论】:

    • 完美。这正是正在发生的事情。赞成。接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多