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

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

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

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

文件名大小说明下载
world.map449k世界地图 1-4级下载
china.map181M中国地图 4-11级下载
nanjing.map64M南京地图 11-17级下载

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

例子从SD卡中读取地图文件,在项目中添加一个MapTiledZone的派生类FileMapTiledZone ,从文件中读取离线地图。

package com.pstreets.gisengine.demo;
import com.mapdigit.gis.raster.MapTiledZone;
import com.mapdigit.util.Log;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
 
public class FileMapTiledZone extends MapTiledZone{
 
    
    //--------------------------------- REVISIONS ------------------------------
    // Date       Name                 Tracking #         Description
    // ---------  -------------------  -------------      ----------------------
    // 14AUG2009  James Shen                            Code review
    
    /**
     * constructor.
     * @param fileName  file name of the map zone.
     * @param isMarkSupported  does device support mark or not.
     * @throws FileNotFoundException
     */
    public FileMapTiledZone(String fileName,boolean isMarkSupported)
     throws FileNotFoundException  {
        super(null);
        this.fileName=fileName;
        this.isMarkSupported=isMarkSupported;
        
 
    }
 
    
    //--------------------------------- REVISIONS ------------------------------
    // Date       Name                 Tracking #         Description
    // ---------  -------------------  -------------      ----------------------
    // 14AUG2009  James Shen                            Code review
    
    /**
     * constructor.
     * @param fileName  file name of the map zone.
     * @throws FileNotFoundException
     */
    public FileMapTiledZone(String fileName) throws FileNotFoundException  {
        this(fileName,false);
    }
 
    public void ensureClose() throws IOException {
        if (!isMarkSupported) {
            super.ensureClose();
            try {
             dataInputStream.close();
                fileConnection.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
 
     public DataInputStream skipBytes(long offset) {
        try {
         fileConnection=new FileInputStream(fileName);
            dataInputStream=new DataInputStream(fileConnection);
            if (offset > 0) {
             fileConnection.skip(offset);
            }
 
        } catch (Exception e) {
            Log.p("seek error:" + e.getMessage(), Log.ERROR);
        }
        return dataInputStream;
    }
 
    private FileInputStream fileConnection=null;
    private DataInputStream dataInputStream;
}

MapTileManager 内部定义一个MapTileStreamReader ,如果设置了本地地图,MapTileManager会先从本地读取,如果本地没有需要图片,然后再从地图服务器上下载。可以使用MapTileStreamReader的addZone 方法添加多个地图包,地图包可以有重叠的区域,这时添加的先后顺序对结果就会影响,如果有多个,则取第一个。


Android引路蜂地图开发包Ver2.1下载

文档下载
开发库下载
实例代码下载

引路蜂地图开发指南http://www.imobilebbs.com/download/guidebeemap/Developer_Guide.pdf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值