代码之家  ›  专栏  ›  技术社区  ›  Paul Alexander

使用osmdroid mapview将自定义图像用作地图平铺

  •  1
  • Paul Alexander  · 技术社区  · 10 年前

    有没有人知道使用osmdoid在地图视图中将图像用作自定义地图块?例如,我希望用户能够从我的应用程序中选择存储在手机上的图像,然后使用该图像替换地图视图中的平铺。

    有人对如何做到这一点有任何建议或想法吗?

    1 回复  |  直到 10 年前
        1
  •  1
  •   MKer    10 年前

    我不知道真正的需要。对于一个特定的缩放级别?

    但是,有两个方向:

    • OSMBonusPack(OSMBonus包装) 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;
      }