四、关于osmdroid地图源的疑问

本文介绍如何在osmdroid中配置多个瓦片源、调整地图缓存位置、使用不同加载机制及离线瓦片缓存的方法。通过具体实例说明了如何实现多层叠加显示及自定义瓦片提供者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于osmdroid地图源的疑问

1、能否一次使用多个tile source?

可以。一个案例如下:

  • Weather
  • Grid lines
  • Data that’s too complex to draw or that’s drawn on a server
  • Elevation data
  • Tile sources that use transparency

    1. 配置基本图层

      mMapView.setTileSource(TileSourceFactory.USGS_TOPO);

    2. 创建新的瓦片提供者并连接瓦片源

      apTileProviderBasic provider = new MapTileProviderBasic(getActivity(), new OnlineTileSourceBase(“MGRS”,0,15,256,”PNG”, new String[0]) {
      @Override
      public String getTileURLString(MapTile aTile) {
      BoundingBox bbox=tile2boundingBox(aTile.getX(), aTile.getY(), aTile.getZoomLevel());
      String baseUrl =”http://egeoint.nrlssc.navy.mil/arcgis/rest/services/usng/USNG_93/MapServer/export?dpi=96&transparent=true&format=png24&bbox=”+bbox.west+”,”+bbox.south+”,”+bbox.east+”,”+bbox.north+”&size=256,256&f=image”;
      return baseUrl;
      }
      });

Note:tile2boundingBox方法来自于OSM的Slippy Map wiki入口。用于转换瓦片坐标到经纬度边界。

  1. 创建瓦片图层

    TilesOverlay layer = new TilesOverlay(provider, getActivity());
    
  2. 设置背景和载入线为透明

    layer.setLoadingBackgroundColor(Color.TRANSPARENT);
    layer.setLoadingLineColor(Color.TRANSPARENT);
    
  3. 将图层添加到视图上

    mMapView.getOverlays().add(layer);
    

2、能否改变osmdroid查询地图缓存(archives)的位置?

可以,这取决于你你是用的osmdroid的版本。

当版本老于5.6时:OpenStreetMapTileProviderConstants.java

详见setCachePath和TILE_PATH_BASE。虽然这个类叫常量,但许多字段可以重写,你可以按自己的意愿进行设置。

当版本为5.6或更新时:Configuration.java

Configuration.getInstance().set...

3、是否有其他载入瓦片的机制?

有如下方式:

  • Asset,你可以放zip格式的缓存在assets文件夹中
  • 本地文件系统(zip、sqlite等缓存文件)
  • 网络资源缓存-默认在/sdcard/osmdroid/tiles/cache.db下
  • 网络资源-=需要什么下载什么

4、如何使用离线瓦片缓存(archives)?

存储位置

复制你的瓦片数据到osmdroid路径中(默认为/sdcard/osmdroid):

/sdcard/osmdroid/
                 myZippedArchive.zip
                 myOsmdroidDatabase.sqlite
                myMBTiles.mbtile
                myGEMF.gemf
/sdcard/osmdroid/tiles/
                     cache.db (this is used for downloaded and cached tiles)
选择瓦片提供者

默认的Map Tile Provider自动扫描osmdroid基本路径中的瓦片缓存(Archives)以及Assets文件夹,最后是在线资源

如果你无感的话,也可以使用OfflineOnlyTileProvider。

当使用的是自己的缓存格式时,你可以实现IArchiveFile接口,然后注册你的实现到ArchiveFileFactory。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值