使用osmdroid mapview将自定义图像用作maptile

时间:2014-07-11 15:29:32

标签: android overlay android-mapview openstreetmap osmdroid

是否有人知道是否可以使用osmdroid将图像用作mapview中的自定义maptile?例如,我希望用户能够从我的应用程序中选择存储在手机上的图像,然后将该图像替换为我的mapview中的图块。

有没有人对如何做到这一点有任何指示或想法?

1 个答案:

答案 0 :(得分:1)

我不确定真正的需要。仅适用于一个特定的缩放级别?

然而,2个方向:

  • OSMBonusPack GroundOverlay可让您将位图图像放置在地图上的某个位置。您可以调整其大小,旋转和透明度。它不是替换瓷砖,它是上面绘制的。它适用于所有缩放级别。

  • 您可以尝试在osmdroid文件系统缓存中用图像文件替换地图图块文件。这两个实用程序函数将帮助您获取给定(lat,lon,zoom)的确切文件路径:

    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;
    }