【发布时间】:2014-07-11 15:29:31
【问题描述】:
有没有人知道是否可以在使用 osmdroid 的地图视图中将图像用作自定义地图贴图?例如,我希望用户能够从我的应用程序中选择存储在手机上的图像,然后让该图像替换我的地图视图中的图块。
有没有人对如何做到这一点有任何指示或想法?
【问题讨论】:
标签: android overlay android-mapview openstreetmap osmdroid
有没有人知道是否可以在使用 osmdroid 的地图视图中将图像用作自定义地图贴图?例如,我希望用户能够从我的应用程序中选择存储在手机上的图像,然后让该图像替换我的地图视图中的图块。
有没有人对如何做到这一点有任何指示或想法?
【问题讨论】:
标签: android overlay android-mapview openstreetmap osmdroid
我不确定了解真正的需求。仅针对一个特定的缩放级别?
但是,两个方向:
OSMBonusPack GroundOverlay 让您将位图图像定位在地图上的某个位置。您可以调整其大小、旋转和透明度。它不是替换瓷砖,它是在上面绘制的。它适用于所有缩放级别。
您可以尝试在 osmdroid 文件系统缓存中用您的图像文件替换地图切片文件。这 2 个实用函数将帮助您获取给定(纬度、经度、缩放)的确切文件路径:
public Point getMapTileFromCoordinates(final double aLat, final double aLon, final int zoom){
final int y = (int) Math.floor((1 - Math.log(Math.tan(aLat * Math.PI / 180) + 1 / Math.cos(aLat * Math.PI / 180)) / Math.PI) / 2 * (1 << zoom));
final int x = (int) Math.floor((aLon + 180) / 360 * (1 << zoom));
return new Point(x, y);
}
public File getFileName(ITileSource tileSource, MapTile tile){
final File file = new File(OpenStreetMapTileProviderConstants.TILE_PATH_BASE,
tileSource.getTileRelativeFilenameString(tile) + OpenStreetMapTileProviderConstants.TILE_PATH_EXTENSION);
return file;
}
【讨论】: