`
longgangbai
  • 浏览: 7325692 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多

        在手机通过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地图数据)

对于不同来源的数据,Guidebee 离线地图生成工具生成最终带索引的离线地图包.map ,可以通过Mapdigit 地图开发包用于各种平台的客户端。

离线地图生成工具使用方法

引路蜂离线地图生成工具用于生成离线地图包,运行环境需要安装 .net framework 3.5.

移动地图

加载文件 –> 读取离线文件 ,可以通过离线工具查看已生成的离线地图包,或者读取MapInfo矢量地图(不在免费版本中)
上移,左移,右移,下移–>移动地图 ,也可以通过鼠标来拖动地图
放大,缩小–>放大及缩小地图
服务器 –>在读取离线文件后,当时显示为离线地图包内容,若想重新连接相应地图服务器,则按些钮。
调整–>将当前地图对齐到最近的网格中。
查找–>为方便移动到地图到指定地方,可以通过查询地图来移动。
选择下载区域

可以通过输入起始及终止网格的序号来指定下载区域,一个简单的方法是通过按住右键拖动鼠标来选择区域,选择的区域以蓝色显示。
每个网格左上角显示当前网络的序号。
选择地图下载级别

在生成离线地图时,同样需要指定需下载的地图级别,比如当前放大级别为10(显示在地图左下角)。你不能选择小于10的级别,下载总是会从当前级别开始。这时可以选择11,12 ,一直到17级。 total xxx ,这里xxx给出了将有多少片图片会被下载到离线地图包中。
级别越大,下载图片越多,成指数级别增长。
地图类型选择

最后选择地图类型,地图类型只对服务器有效,可以从下拉框中选择各种地图类型,点击开始,则开始下载图片,下载结束时,显示“finished writing”。
地图文件名为 StartX_StartY_EndX_EndY_ZoomLevel_MapType.map

离线工具下载  http://www.imobilebbs.com/download/tools/downloader.msi    安装版

和 http://www.imobilebbs.com/download/tools/MapTileDownloader.rar          绿色版

离线工具需要.Net Framework Runtime,如果您的计算机上未安装,请下载安装

新版离线地图工具下载

基本使用方法参见离线地图生成工具使用方法

  • 支持下载1-23 级地图。
  • 允许指定下载文件名。
  • 性能大幅提高> 50 倍。

离线工具下载 http://www.imobilebbs.com/download/tools/downloader.msi 安装版
和 http://www.imobilebbs.com/download/tools/MapTileDownloader.rar 绿色版
离线工具需要.Net Framework Runtime,如果您的计算机上未安装,请下载安装

再谈离线地图工具(1):如何使用已有地图数据源生成离线地图包

在前文离线地图下载方法解析 , 离线地图生成工具结构图离线地图生成工具使用方法

我们重点介绍如果使用引路蜂离线地图制作工具的原理和使用方法,离线地图工具缺省支持从Google地图,Bing地图,MapABC地图,Yahoo地图等地图服务器下载制作离线地图包。

但有些情况下,用户自己已经购买了地图数据(如ArgGIS, MapInfo,PostGIS ,ShapeFile等)需要从这些数据来生成离线地图包。

可以利用GeoServer和引路蜂离线地图包来制作离线地图包:步骤如下:

1. 下载安装GeoServer ,GeoServer是Java应用,可以用于Windows ,Mac OS, Linux,本教程使用Windows 系统,在 http://geoserver.org/display/GEOS/Stable 选择 Windows Installer

2. GeoServer安装成功后,在GeoServer 启动菜单有如下几个菜单项:

  • Start GeoServer   启动GeoServer
  • Stop GeoServer   停止GeoServer
  • GeoServer Web Admin Page: GeoServer管理页面

首先启动GeoServer,然后进入GeoServer管理页面, 缺省用户名和密码为admin , geoserver.

3. 首先看看随GeoServer安装时自带的地图数据   Data –>Layers

我们想生成Topp:states 数据的离线地图包,可以在Data -> Layer Preview 中使用 OpenLayers来预览该图层:

4. GeoServer 集成了一个GeoWebCache ,是一个采用Java实现用于缓存WMS(Web Map Service)Tile的开源项目。当地图客户端请求一张新地图和Tile时,GeoWebCache将拦截这些调用然后返回缓存过的Tiles。如果找不到缓存再调用服务器上的Tiles,从而提高地图展示的速度。实现更好的用户体验.

这里不详细介绍GeoWebCache ,只要知道它提供一种和Google Map类似的Tile访问方法 。可以根据Tile的X,Y和Zoom来访问一个图片:

比如安装好GeoServer,在IE地址栏输入:

http://localhost:8080/geoserver/gwc/service/gmaps?layers=topp:states&zoom=1&x=0&y=0 ,表示Zoom为1即是X=0和Y=0的Tile:

5. 下载引路蜂离线地图工具

离线工具下载 http://www.imobilebbs.com/download/tools/downloader.msi 安装版

和 http://www.imobilebbs.com/download/tools/MapTileDownloader.rar 绿色版

离线工具需要.Net Framework Runtime,如果您的计算机上未安装,请下载安装

6.  打开引路蜂离线地图工具的安装目录: 找到 MapDigit.exe.config ,这是 MapDigit.exe的配置文件,这个配置文件缺省定义了多个地图服务器(软件Google地图,Bing地图等)。

我们重用GOOGLESATELLITE这个类型,将它重新定义为:

<add key=”GOOGLESATELLITE” value=”http://localhost:8080/geoserver/gwc/service/gmaps?layers=topp:states#zoom={ZOOM}#x={X}#y={Y}” />

可以对比一下 URL:

http://localhost:8080/geoserver/gwc/service/gmaps?layers=topp:states&zoom=1&x=0&y=0

将& 改成#  Zoom=1 , x=0 ,y=  改成zoom={ZOOM},x={X},y={Y}从而就为Layer: topp:states 定义好了URL模板,然后启动MapDigit.exe ,在下来框中选择 GOOGLESATELLITE。

后面就可以和下载Google地图,Bing地图一样来制作离线地图包了,地图数据源来自GeoServer。离线地图生成工具使用方法

限于篇幅,将在下一篇介绍如果使用ShapeFile做为GeoServer的数据源。

再谈离线地图工具(2):为GeoServer添加ShapeFile数据源

这里简要介绍一下如何给GeoServer添加一个ShapeFile:

准备测试数据

1. 下载示例ShapeFile nyc_roads.zip ,这个文件含有纽约市道路图。

2. 将其解压得到四个文件 nyc_roads.shp ,nyc_roads.shx, nyc_roads.dbf, nyc_roads.prj

3. 将 nyc_roads 拷贝到 <GEOSERVER_DATA_DIR> (在GeoServer 安装目录的data_dir)的data 子目录下: 在windows 的缺省目录名为:

C:\Program Files (x86)\GeoServer 2.1.0\data_dir\data

使用GeoServer创建Workspace, Workspace 用来管理一组相关的地图图层(Layers),比如道路层,湖泊层,文字层等,多层叠加可以构成完整的地图。

  1. 使用浏览器 进入GeoServer的管理页面http://localhost:8080/geoserver/web.
  2. 登录到GeoServer
  3. 转到Data->Workspace页面
  4. 创建一个新的Workspace,选择Add New Workspace 按钮,将会提升输入Workspace名称,和Namespace URI:
  5. 输入Name: nyc_roads ,URI: http://opengeo.org/nyc_roads, 这个URI可以用来唯一指定中个Workspace, http://opengeo.org可以替换成你自己的域名。
  6. 点击“Submit”提交,GeoServer将会创建nyc_roads Workspace.

创建 Data Store

  1. 转到 Data -> Store 页面。
  2. 为了添加 nyc_roads 数据,需要在GeoServer中创建一个新的Data Store, 点击“Add new Store”按钮,可以看到GeoServer支持很多种数据源: PostGIS NG , Shapefiles 等等。
  3. 因为我们使用的是shapefile,因此选择Shaprfile -ESRI(tm) Shapefile (*.shp)
  4. 在”New Vector Data Source”页面 来配置这个Store的基本信息,如Workspace, Data Source Name, Description (这些都可以根据需要自己定义)
  5. 在”Connection Parameters”下指定nyc_roads.shp 的路径
  6. 点击“Save”,页面将转到Layer 的配置页面。

Layer 配置

  1. 在“New Layer Chooser” ,选择 nyc_road.
  2. 配置“publish”的参数
  3. 为shape文件生成边界矩形参数 (点击” Compute from Data” 自动产生)
  4. 为Shaprfile 指定显示风格 (在Publsih页面)
  5. 选择”line”的缺省风格
  6. 保持配置”Save”

预览Layer

可以通过 Layer Preview 来检验nyc_roads 发布成功,

选择使用OpenLayers来显示地图

使用引路蜂离线地图工具,参见上篇将 MapDigit.ext.config 中 Layers名称改为nyc_roads:nyc_roads

<add key=”GOOGLESATELLITE” value=”http://localhost:8080/geoserver/gwc/service/gmaps?layers=nyc_roads:nyc_roads#zoom={ZOOM}#x={X}#y={Y}” />

同样的方法可以为nyc_roads 生成离线地图包

由此可见,GeoServer可以用来架设自定义的地图服务器,引路蜂地图开发包(Android,Java ME, Blackberry等平台)支持这种自定义的服务器,离线地图工具生成的离线地图包可以直接用在引路蜂地图开发包中。

Android引路蜂地图开发示例:离线地图示例

在手机上,离线地图包一般放在SD卡上,然后通过文件读取。引路蜂地图开发包支持同时读取多个地图包,这是通过MapTiledZone类和MapTileStreamReader类来完成的。每个地图包对应于一个MapTiledZone,地图包对每张地图建立的索引以加速图片检索将记录地图包存放的区域和缩放级别。而类MapTileStreamReader提供了管理这些地图包的方法.

离线地图工具参见:离线地图生成工具结构图 和 离线地图生成工具使用方法

下面的示例从SD卡guidebee子目录读取world.map, china.map, nanjing.map ,更一般的做法是读取子目录下所有扩展名为.map 离线地图包,这样可以随时添加或删除离线地图包。因为是示例,所以在代码中指定读取这三个地图包。下面离线地图包为例子中用到的,是使用离线工具制作的。

文件名 大小 说明 下载
world.map 449k 世界地图 1-4级 下载
china.map 181M 中国地图 4-11级 下载
nanjing.map 64M 南京地图 11-17级 下载

随着缩放级别的增大,需下载的离线地图图片呈现指数增长,一般不可能将一个国家从1到17放在一个离线地图包,可以分几个层次下载制作离线地图包。如上图分3个层次。世界–>中国–>南京。

Java ME引路蜂地图开发示例:离线地图示例

Android引路蜂地图开发示例:离线地图示例

 

地图开发

提起地图开发包,Google 地图和Bing 地图主要应用于Web应用,在离线方式和移动平台上它们并没有提供足够的支持,比如在Java ME平台上使用Google地图API或是在Android,iPhone平台上使用Bing地图。如在中国,想在Windows Mobile 平台上使用 MapABC地图API都不是很方便。
引路蜂地图开发包提供了对几乎所有软件平台(桌面和移动平台)的支持,采用统一的接口使用包括Google 地图,Bing地图,MapABC地图在内多达二十多种地图类型,并在同一开发包中支持离线地图,矢量地图显示。
下图显示了引路蜂地图开发包支持的开发平台,软件包以三个不同的开发包提供对各个平台的支持:

Java ME 地图开发包 MIDP/LWUIT/Blackberry
Java SE 地图开发包 Android/Java SE
.Net Framework 地图开发包 Windows Mobile/Windows Phone 7/.Net desktop/Mac OS/iPhone/iPad

引路蜂地图开发包支持的主要功能如下表

注:对于Mac OS, iPhone,iPad 的支持是通过Mono C#支持,.Net Mobile 包括 Windows Mobile 6.0-6.5 和 Windows Phone 7.

产品报价:

使用许可 开发包 平台支持 报价
商用许可 Java ME 地图开发包 支持 Java ME ,LWUIT ,Blackberry 1350澳元
Java SE 地图开发包 支持 Android , Java SE 1350澳元
.Net Framework 地图开发包 Windows Mobile, .Net Framework desktop , Mono, iPhone 1350澳元
Silverlight地图开发包 支持 Windows Phone, Sliverlight, WFP etc
试用许可 地图开发包 Java ME 地图开发包,Java SE 地图开发包,.Net Framework 地图开发包 免费,带“Guidebee”水印,不可以商用。开发包中已包含使用许可。
学生许可 地图开发包 Java ME 地图开发包,Java SE 地图开发包,.Net Framework 地图开发包 免费,请使用试用许可,开发包中已包含使用许可。

注:若购买全部平台,价格为3500 澳元。以上费用为一次性收费,不针对每个设备另外收费。开发包中含有详细文档和示例。并含有免费试用许可。提供EMail技术支持。地图开发包含地图开发,二维图形包,定位开发包等。Silverlight地图开发包测试中,暂不提供。购买引路蜂商业许可,请直接联系James.shen@guidebee.biz. 目前无其它代理。

试用许可已包含在开发包中,具体使用可以参考开发指南 第四章,第一个地图应用

付款方式:

  • HSBC澳洲分行 –接受澳元
  • Paypal付款        –接受美元,澳元
  • 中国银行,招行 –接受人民币(2011年5月1日起)

收到付款,将在24小时内发出商业版License

 

地图开发包下载

  1. Java ME平台地图开发包
  2. LWUIT平台地图开发包
  3. Blackberry 平台地图开发包
  4. Android平台地图开发包
  5. iOS 平台地图开发包
  6. Windows Phone 平台地图开发包
  7. 桌面平台(Java SE, .Net Framework)地图开发包

 

引路蜂地图应用GNavigator完整源码

GNavigator是 曾经发布在Nokia Ovi Store的Java ME应用,基本使用到了引路蜂地图API的所有功能,尽管这是一个基于LWUIT的应用,使用Java语言开发,其它平台也可以参考这个应用的代码。

总代码量大约为24000行,其中纯代码为12000行。

几个用户界面如下:

包括导航演示(可以连接GPS)

代码下载 ,用户手册 ,为Netbean 项目。

分享到:
评论

相关推荐

    gis地图 百度地图离线版(江苏省瓦片至13级)

    GIS地图,全称为地理信息系统(Geographic Information System),是一种能够采集、存储、管理、分析和展示与地理位置相关数据的技术系统。在本资源中,我们关注的是GIS地图的一个具体应用——百度地图的离线版本,...

    arcgis离线地图

    在IT行业中,ArcGIS是一款广泛应用于地理信息系统(GIS)的软件,它提供了强大的地图制作、数据分析和空间处理功能。本文将深入探讨如何使用JavaScript、ArcGIS API for JavaScript以及HTML来开发一个离线地图项目,...

    LeafLet离线地图案例demo集合非常详细

    LeafLet是一款轻量级的JavaScript库,专门用于创建交互式的二维地图。它的设计目标是简单易用,同时提供了丰富的功能,使得开发者可以...通过深入学习和实践,你将能够构建出功能强大且用户体验良好的离线地图应用。

    离线地图学习而已

    在电子书中,你可以期待找到离线地图的工作原理、数据结构、数据压缩技术以及如何利用API和库(例如Leaflet、OpenLayers或Mapbox GL JS)来构建离线地图应用的详细讲解。这些书籍可能还会讨论如何使用GIS软件(如...

    LeafLet离线地图详细demo合集.rar

    这个"LeafLet离线地图详细demo合集.rar"文件显然是一个包含多个示例的资源包,旨在帮助开发者更好地理解和应用LeafLet在离线地图场景中的使用。 1. **LeafLet基本概念**: - **地图层(Map Layer)**:LeafLet的...

    gis 加载离线地图 mmpk, shp,tpk

    本文将详细探讨如何使用C#语言加载三种常见的离线地图格式:MMPK(Mobile Map Package)、SHP(Shapefile)和TPK(Tile Package)。 首先,MMPK是Esri公司推出的一种离线地图包格式,它包含了地图数据、样式、元...

    C# winfrom 百度离线瓦片地图

    在IT领域,尤其是在GIS(地理信息系统)开发中,制作和使用离线地图是常见的需求。本文将详细解析“C# WinForm 百度离线瓦片地图”这一主题,包括其核心概念、实现原理以及相关功能。 首先,我们需要了解什么是瓦片...

    百度离线地图离线资源包(包含地图瓦片下载器)

    1. **版权问题**:在使用百度地图的离线资源时,必须遵守其服务条款,包括但不限于非商业用途和不进行二次分发。 2. **更新频率**:地图数据会定期更新,用户需定期检查并更新下载的瓦片以保持地图的新鲜度。 3. **...

    offlineMap离线地图

    离线地图技术是移动设备和桌面应用中的一种重要功能,特别是在网络覆盖不稳定或者数据流量有限的情况下,它使得用户能够在无网络连接时仍然可以查看和使用地图。离线地图的实现涉及多个技术领域,包括地理信息系统...

    Android客户端-使用MBTliles离线地图包

    SuperMap iClient 6R Android客户端是一款强大的GIS(地理信息系统)解决方案,它支持MBTiles离线地图包的使用,为开发者提供了丰富的地图功能。MBTiles是一种将地图切片存储为SQLite数据库格式的离线地图标准,包含...

    openlayers发布简易离线地图DEMO

    这部分代码将定义源、层和地图,并可能包含交互事件的处理函数。 4. **运行DEMO**: 解压下载的"openLayers简易离线地图Demo"文件,打开其中的HTML文件,浏览器会加载并执行JavaScript代码,从而在页面上显示离线...

    GmapDowloader.rar_GMAP.NET_GMap 离线_gmap c#_google 地图_离线地图

    在GMapDownloader这个工具中,用户可以指定需要下载的地理位置、缩放级别和地图类型(如道路图、卫星图)。它会自动将选定区域划分为多个小块,并逐个下载。每个下载的地图块对应一个特定的经纬度范围,这些信息会被...

    离线地图,tpk

    离线地图是GIS(地理信息系统)领域中一个重要的概念,特别是在网络不畅或者需要节省数据流量的情况下,离线地图能够提供高效、便捷的导航和数据分析服务。TPK(Tile Package)是Esri(ArcGIS的主要开发者)推出的一...

    离线地图GIS设备远程监测方案.rar

    为了便于理解和学习,提供的"设备远程监测离线地图GIS方案.avi"视频教程可能会详细介绍整个系统的搭建步骤、关键代码实现以及实际操作演示。通过观看这个视频,开发者可以更深入地了解如何利用C++和GIS技术来构建...

    百度地图 百度离线地图 js+c#

    在离线地图项目中,GIS技术可能用于处理地理坐标、投影转换、空间分析等功能,以确保地图的准确性和可用性。 总的来说,"百度地图 百度离线地图 js+c#"是一个结合了前端JavaScript技术和后端C#开发,利用GIS理论和...

    离线地图基础版本.zip

    离线地图技术是现代GIS(地理信息系统)领域中不可或缺的一部分,尤其在移动设备或网络条件不稳定的情况下,它能提供高效且可靠的导航与地理信息查询服务。"离线地图基础版本.zip"是一个针对离线地图应用的解决方案...

    基于Python的离线Google地图操作实现

    互联网技术和地图测绘技术的发展推动了一系列与地图相关的应用服务,典型的是Google提供的Google Map、Google Earth和Google Sketchup等。在很大程度上提高了公众的地理信息认知能力,而且普通用户可以方便地查询...

    osmdroid 加载geopackage离线底图

    在本文中,我们将详细探讨如何使用osmdroid加载GeoPackage格式的离线地图数据。 GeoPackage是一种开放标准的数据容器,由Open Geospatial Consortium (OGC)制定,用于存储地理空间信息。它可以包含多种地理数据类型...

    全国各地电子离线地图

    【全国电子离线地图】是一种特别适用于内网环境使用的资源,它允许用户在没有网络连接的情况下查看和使用地图数据。这种地图系统对于那些网络不稳定或无法访问互联网的地区尤其有用,比如偏远地区或者网络受限的环境...

    全球离线地图(1-6级)tif资源

    总的来说,这个"全球离线地图(1-6级)tif资源"提供了覆盖全球的多层级地理空间信息,适用于各种应用场景,无论是户外探险者用于导航,还是研究人员进行地理数据分析,都能从中受益。使用时,需确保有相应的GIS软件...

Global site tag (gtag.js) - Google Analytics