我正在使用OSMDroid开发一个android映射应用程序。我试图使用免费自定义航拍图像,完全独立于谷歌和/或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 ));
底图图块是混洗的,并不对应于lat / lon,但叠加是可以的。
答案 0 :(得分:2)
磁贴服务器可能使用不同的方案来检索磁贴。尝试翻转X和Y坐标。 Slippy地图服务器(osm)使用Z / X / Y.ext格式。 ArgGis和其他几个人使用Z / Y / X.ext格式。所有其他坐标都是相同的。这意味着解决方案很简单,覆盖getTileURLString方法并以服务器所需的任何格式提供坐标。
Osmdroid就是这样做的一个例子。
相关位代码
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;
}
});
您还希望在此更改后清除缓存,因为它的坐标错误