【问题标题】:Use custom image as a maptile using osmdroid mapview使用 osmdroid mapview 将自定义图像用作地图贴图
【发布时间】:2014-07-11 15:29:31
【问题描述】:

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

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

【问题讨论】:

    标签: android overlay android-mapview openstreetmap osmdroid


    【解决方案1】:

    我不确定了解真正的需求。仅针对一个特定的缩放级别?

    但是,两个方向:

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

    【讨论】:

    • 其背后的想法是,用户可以将建筑物平面图的图像上传到地图视图中,并能够在建筑物的不同部分放置标记等。好吧,这两个想法听起来都不错,我确实考虑过使用 GroundOverlay,但我担心当我在地图上放置新标记时,它们可能会放置在 groundoverlay 下方
    • 您可以控制叠加层的绘制顺序。例如,在所有叠加层的“底部”添加 GroundOverlay,以便在上面绘制所有其他叠加层:map.getOverlays().add(0, myGroundOverlay);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 2019-04-21
    • 1970-01-01
    相关资源
    最近更新 更多