GIS的学习(二十九)Osmdroid 离线地图存放位置的研究和详细分析

本文详细介绍了如何使用osmdroid调用离线地图,包括地图的存放位置、调用路径以及默认的图层查找机制。osmdroid会首先查找文件系统中的地图,接着查找压缩文件中的地图,如果都找不到,则从互联网下载。此外,文章还讨论了如何自定义地图图层存储,并提到了离线地图生成工具的使用方法和结构,以及如何使用GeoServer添加ShapeFile数据源生成离线地图包。
摘要由CSDN通过智能技术生成

        在手机通过osmdroid调用离线地图必须放在sdcard目下、如果采用osmdroid调用地图,那么用户查看地图手机上面一定有一个目录叫/sdcard/osmdroid/目录。目录下存放着调用的图层。

 

 

在线地图例如路径如下:

/sdcard/osmdroid/titles/poly_landmarks/14/3667/6189.png.tile

 

表示osmdroid调用的图层为poly_landmarks,14为缩放大小,3667为图层的索引,3667目录下为具体的索引下图层tiles图片。

 

离线地图调用路径:

 

       /mnt/sdcard/osmdroid/gmap.zip

 

 

 

 

 

 

文档说明如下:

 

Map tiles in Osmdroid are provided by map tile providers. The default tile provider used by Osmdroid is MapTileProviderBasic. This provider extends MapTileProviderArray, which means that it is an array of a few other tile providers - when a tile is requested these tile providers are asked one by one for a tile image until one of them provides it. Take a look at the constructor of MapTileProviderBasic:

public MapTileProviderBasic(final IRegisterReceiver pRegisterReceiver,
            final INetworkAvailablityCheck aNetworkAvailablityCheck, final ITileSource pTileSource) {
    super(pTileSource, pRegisterReceiver);

    final TileWriter tileWriter = new TileWriter();

    final MapTileFilesystemProvider fileSystemProvider = new MapTileFilesystemProvider(pRegisterReceiver, pTileSource);
    mTileProviderList.add(fileSystemProvider);

    final MapTileFileArchiveProvider archiveProvider = new MapTileFileArchiveProvider(pRegisterReceiver, pTileSource);
    mTileProviderList.add(archiveProvider);

    final MapTileDownloader downloaderProvider = new MapTileDownloader(pTileSource, tileWriter, aNetworkAvailablityCheck);
    mTileProviderList.add(downloaderProvider);
}

There are three map tile providers added to the array of providers, in this order:

  • MapTileFilesystemProvider - provides tiles from the file system (SD card directory)
  • MapTileFileArchiveProvider - provides tiles from archive in file system
  • MapTileDownloader - provides tiles by downloading them from the Internet (e.g. from OSM servers)

          So the MapTileProviderBasic looks for a given tile first in the file system, if the tile is not available then it looks for it in archive files and again if it is not available there it downloads the tile from the Internet.

         Ok, this is the default mechanism. If you want to change this mechanism to look for tiles stored in a DB then you can create you own class similar to MapTileProviderBasic. So your class could also exte  nd MapTileProviderArray and just use other providers in the constructor. In Osmdroid there is a class DatabaseFileArchive which could probably help you in reading tiles from the DB.

        After creating your own tile provider you should use it instead of the default one. Map tile providers are attached to the MapView. Some of the constructors of MapView take MapTileProviderBase as an argument - you can use one of them to attach your own provider.

 

 

综述:osmdroid使用地图的方式如下

1.首先调用MapTileFilesystemProvider 在sd card 目录查找地图图层。

2.如果没有,调用MapTileFileArchiveProvider 查找zip类型的压缩文件。

3.如果没有,到官方下载地图。

 

如果想使用本地数据库存储图层信息,那么需要重设置MapTileProviderArray实现地图图层的存储。

 

 

转载自引路峰移动软件

 

http://www.imobilebbs.com/wordpress/%e7%a6%bb%e7%ba%bf%e5%9c%b0%e5%9b%be%e4%b8%8b%e8%bd%bd/%e7%a6%bb%e7%ba%bf%e5%9c%b0%e5%9b%be%e5%b7%a5%e5%85%b7

 

 

离线地图生成工具结构图

前面描述的地图应用基本上都需要网络连接,每次更新地图都需要连接地图服务器。在编写地图客户端软件时,常常会想使用离线地图包,这样一来可以节省流量,同时也可以提高客户端响应能力。引路蜂软件在提供地图开发包的同时也提供了离线地图生成工具,可以用于地图开发包,可以做到显示地图时,先从本地地图包取出相应图片,如果本地没有,再从相应地图服务器上取图片。
Guidebee 离线地图生成器的数据来源可以有三种。
1.各种地图服务器如微软Bing map,google map 或者是用户自定义的服务器。只要符合通用的分片原则http://msdn.microsoft.com/en-us/library/bb259689.aspx
2. 已生成的离线地图包,包括guidebee离线地图包以及其它格式离线地图包(如mgmap).
3. 来自矢量地图数据(如MapInfo, ArgGIS地图数据)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值