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

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

//------------------------------------------------------------------------------
//                         COPYRIGHT 2010 GUIDEBEE
//                           ALL RIGHTS RESERVED.
//                     GUIDEBEE CONFIDENTIAL PROPRIETARY
/ REVISIONS 
// Date       Name                 Tracking #         Description
// ---------  -------------------  ----------         --------------------------
// 16SEP2010  James Shen                              Initial Creation

//--------------------------------- PACKAGE ------------------------------------
package com.pstreets.gisengine.demo.midp;
 
//--------------------------------- IMPORTS ------------------------------------
import com.mapdigit.gis.geometry.GeoLatLng;
import com.mapdigit.gis.raster.MapTileStreamReader;
import com.mapdigit.gis.raster.MapTiledZone;
import com.mapdigit.gis.raster.MapType;
import com.pstreets.gisengine.demo.MapDemoMIDP;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.microedition.lcdui.Display;
 
//[------------------------------ MAIN CLASS ----------------------------------]
//--------------------------------- REVISIONS ----------------------------------
// Date       Name                 Tracking #         Description
// --------   -------------------  -------------      --------------------------
// 16SEP2010  James Shen                              Initial Creation

/**
 *  stored map demo for Guidebee Map API on MIDP platform.
 * <hr><b>© Copyright 2010 Guidebee, Inc. All Rights Reserved.</b>
 * @version     1.00, 16/09/10
 * @author      Guidebee Pty Ltd.
 */
public class StoredMapMIDP extends MapDemoMIDP {
 
    MapTileStreamReader localMapTileFileReader;
 
    public void startApp() {
 
        init();
 
        InputStream is = this.getClass().getResourceAsStream("/world03.map");
        byte[] buffer = null;
        try {
            buffer = new byte[is.available()];
            is.read(buffer);
            is.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        ByteArrayInputStream bais = new ByteArrayInputStream(buffer);
        MapTiledZone mapTiledZone = new MapTiledZone(new DataInputStream(bais));
 
        localMapTileFileReader
                = mapTileDownloadManager.getInteralMapTileStreamReader();
        localMapTileFileReader.addZone(mapTiledZone);
        //you can add more store map package here use addZone
 
        localMapTileFileReader.open();
        GeoLatLng center = new GeoLatLng(-31.948275, 115.857562);
        map.setCenter(center, 3, MapType.GOOGLEMAP);
        Display.getDisplay(this).setCurrent(canvas);
    }
 
    public void destroyApp(boolean unconditional) {
        localMapTileFileReader.close();
    }
}


 

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

离线地图工具参见:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值