下面的代码显示中国南京地图

//------------------------------------------------------------------------------
//                         COPYRIGHT 2011 GUIDEBEE
//                           ALL RIGHTS RESERVED.
//                     GUIDEBEE CONFIDENTIAL PROPRIETARY
/ REVISIONS
// Date       Name                 Tracking #         Description
// ---------  -------------------  ----------         --------------------------
// 28JAN2011  James Shen                              Initial Creation//--------------------------------- PACKAGE ------------------------------------
package com.pstreets.gisengine.demo.midp;//--------------------------------- IMPORTS ------------------------------------
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Display;import com.mapdigit.gis.MapLayer;
import com.mapdigit.gis.drawing.IGraphics;
import com.mapdigit.gis.drawing.IImage;
import com.mapdigit.gis.geometry.GeoLatLng;
import com.mapdigit.gis.raster.IMapDrawingListener;
import com.mapdigit.gis.raster.IReaderListener;
import com.mapdigit.gis.raster.MapTileDownloadManager;
import com.mapdigit.gis.raster.MapType;
import com.mapdigit.gis.raster.RasterMap;import com.mapdigit.licence.LicenceManager;
import com.pstreets.gisengine.demo.midp.drawing.MIDPGraphicsFactory;//[------------------------------ MAIN CLASS ----------------------------------]
/*** Hello China demo.* <hr><b>© Copyright 2011 Guidebee, Inc. All Rights Reserved.</b>* @version     1.00, 28/01/11* @author      Guidebee Pty Ltd.*/
public class HelloChina extends MIDlet implements IReaderListener,IMapDrawingListener {protected RasterMap map;protected MapTileDownloadManager mapTileDownloadManager;protected IImage mapImage;protected IGraphics mapGraphics;protected MapCanvas canvas;public HelloChina() {try {LicenceManager licenceManager = LicenceManager.getInstance();long keys[] = {0x34ba283b8daeb659L, -0x53c811f9da86e998L,-0x34ba25c3c581521eL, 0xf15df9fc7e45628L, 0x6a4ece44296c0287L,0x4ab0cff532902b1cL,};licenceManager.addLicence("GuidebeeMap_JavaME", keys);} catch (Exception ex) {}}public void startApp() {canvas = new MapCanvas();//set the graphics factoryMapLayer.setAbstractGraphicsFactory(MIDPGraphicsFactory.getInstance());mapImage = MapLayer.getAbstractGraphicsFactory().createImage(canvas.getWidth(),canvas.getHeight());mapGraphics = mapImage.getGraphics();//Create the Digital Map objects.mapTileDownloadManager = new MapTileDownloadManager(this);try {map = new RasterMap(1024, 1024, mapTileDownloadManager);} catch (Exception ex) {}map.setScreenSize(canvas.getWidth(),canvas.getHeight());mapTileDownloadManager.start();map.setMapDrawingListener(this);GeoLatLng center = new GeoLatLng(32.0616667, 118.7777778);map.setCenter(center, 13, MapType.GOOGLECHINA);Display.getDisplay(this).setCurrent(canvas);}public void pauseApp() {}public void destroyApp(boolean unconditional) {mapTileDownloadManager.stop();}public void readProgress(int downloaded, int total) {System.out.println(downloaded + "/" + total);}public void done() {if (canvas != null) {canvas.repaint();}}/*** Map canvas class, a subclass of Canvas.*/protected class MapCanvas extends Canvas {private void panMap(float x, float y) {float dx = x - oldX;float dy = y - oldY;if (!(dx == 0 && dy == 0)) {map.panDirection((int) dx, (int) dy);}}boolean isPan = false;private float oldX = -1;private float oldY = -1;protected void paint(Graphics g) {map.paint(mapGraphics);g.drawImage((Image) mapImage.getNativeImage(), 0, 0, 0);}public void pointerDragged(int x, int y) {if (isPan) {panMap(x, y);oldX = x;oldY = y;}}public void pointerPressed(int x, int y) {oldX = x;oldY = y;isPan = true;}public void pointerReleased(int x, int y) {oldX = x;oldY = y;isPan = false;}}
}
  1. 首先是设置使用许可(Licence),设置使用许可由二部分组成,一个是将licence文件(guidebee.lic)放在合适的目录下,然后在程序中输入正确的注册码。Ln 51-55
  2. 前文说过,引路蜂地图开发包不直接调用图形相关方法,而是定义了一些接口函数,在使用时,需实现这些平台相关的方法。例如在 Java ME平台,MIDPFont, MIDPGraphics,MIDPGraphicsFactory,MIDPImage 实现了这些接口方法,在调用任务地图相关方法,需要告诉地图如何调用这些方法。MapLayer.setAbstractGraphicsFactory(MIDPGraphicsFactory.getInstance());则是用来设置平台相关GraphicsFactory实现。Ln 64-67
  3. 创建MapTileDownloaderManager 实例,MapTileDownloaderManager是用来管理工作线程以下载地图图片或是从本地地图包中读取地图图片。之后创建RasterMap 地图实例,RasterMap使用MapTileDownloaderManager来获取地图图片。Ln 70-Ln74
  4. MapTileDownloaderManager.Start 启动工作线程。注意在程序结束时,需调用Stop 方法来停止这些工作线程,如(6) Ln 77
  5. 设置地图中心点,这里设置是南京的经纬度坐标。地图类型选择是Google中国地图,地图包中定义了多达20多种不同的地图可供选择。地图缩放级别为13级。1级最小,17级最大。 Ln 79 -80
  6. 程序结束时,需调用Stop 方法来停止工作线程。 Ln 88
  7. panDirection(dx,dy)用来平移地图,将在后面介绍。 Ln 110
  8. 在屏幕上显示地图。在这个应用中 MapCanvas 最终用来在屏幕上显示地图,每个程序都有一个UI界面,地图最终总是要在屏幕上显示的。这两行代码是将地图复制到屏幕上。 Ln 119 -120
  9. 地图下载采取异步工作方式,也就是地图图片的读取是通过工作线程在后台工作,应用可以监视读取图片的进度readProgress,每张地图图片下载完毕时,会使用消息Done通知应用,在Done消息处理中一般用来更新屏幕显示。Ln 91 -99

在后面的示例中,一些共同的代码不再重复,将设计一个基类MapDemoMIDP,创建地图,设置使用许可等代码都放在基类中.

//------------------------------------------------------------------------------
//                         COPYRIGHT 2010 GUIDEBEE
//                           ALL RIGHTS RESERVED.
//                     GUIDEBEE CONFIDENTIAL PROPRIETARY
/ REVISIONS
// Date       Name                 Tracking #         Description
// ---------  -------------------  ----------         --------------------------
// 28JAN2011  James Shen                              Initial Creation//--------------------------------- PACKAGE ------------------------------------
package com.pstreets.gisengine.demo;//--------------------------------- IMPORTS ------------------------------------
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;import com.mapdigit.gis.MapLayer;
import com.mapdigit.gis.drawing.IGraphics;
import com.mapdigit.gis.drawing.IImage;
import com.mapdigit.gis.raster.IMapDrawingListener;
import com.mapdigit.gis.raster.IReaderListener;
import com.mapdigit.gis.raster.MapTileDownloadManager;
import com.mapdigit.gis.raster.MapType;
import com.mapdigit.gis.raster.RasterMap;
import com.mapdigit.licence.LicenceManager;import com.pstreets.gisengine.demo.midp.drawing.MIDPGraphicsFactory;//[------------------------------ MAIN CLASS ----------------------------------]
//--------------------------------- REVISIONS ----------------------------------
// Date       Name                 Tracking #         Description
// --------   -------------------  -------------      --------------------------
// 28JAN2011  James Shen                              Initial Creation/*** Base class for all Map Demos.* <hr><b>© Copyright 2010 Guidebee, Inc. All Rights Reserved.</b>* @version     1.00, 18/09/10* @author      Guidebee Pty Ltd.*/
public abstract class MapDemoMIDP extends MIDlet implements IReaderListener,IMapDrawingListener {protected RasterMap map;protected MapTileDownloadManager mapTileDownloadManager;protected IImage mapImage;protected IGraphics mapGraphics;protected MapCanvas canvas;public MapDemoMIDP() {try {LicenceManager licenceManager = LicenceManager.getInstance();long keys[] = {0x34ba283b8daeb659L, -0x53c811f9da86e998L,-0x34ba25c3c581521eL, 0xf15df9fc7e45628L, 0x6a4ece44296c0287L,0x4ab0cff532902b1cL,};licenceManager.addLicence("GuidebeeMap_JavaME", keys);} catch (Exception ex) {ex.printStackTrace();}}/*** this only used for the vector map demo.*/public void initCanvas() {canvas = new MapCanvas();}public void init() {canvas = new MapCanvas();//set the graphics factoryMapLayer.setAbstractGraphicsFactory(MIDPGraphicsFactory.getInstance());mapImage = MapLayer.getAbstractGraphicsFactory().createImage(canvas.getWidth(),canvas.getHeight());mapGraphics = mapImage.getGraphics();//Create the Digital Map objects.mapTileDownloadManager = new MapTileDownloadManager(this);MapType.updateMapTileUrl();map = new RasterMap(1024, 1024, mapTileDownloadManager);map.setScreenSize(canvas.getWidth(),canvas.getHeight());mapTileDownloadManager.start();map.setMapDrawingListener(this);}public void pauseApp() {}public void destroyApp(boolean unconditional) {mapTileDownloadManager.stop();}public void readProgress(int arg0, int arg1) {System.out.println(arg0 + "/" + arg1);}public void done() {if (canvas != null) {canvas.repaint();}}/*** Map canvas class, a subclass of Canvas.*/protected class MapCanvas extends Canvas {private void panMap(float x, float y) {float dx = x - oldX;float dy = y - oldY;if (!(dx == 0 && dy == 0)) {map.panDirection((int) dx, (int) dy);}}boolean isPan = false;private float oldX = -1;private float oldY = -1;protected void paint(Graphics g) {map.paint(mapGraphics);g.drawImage((Image) mapImage.getNativeImage(), 0, 0, 0);}public void pointerDragged(int x, int y) {if (isPan) {panMap(x, y);oldX = x;oldY = y;}}public void pointerPressed(int x, int y) {oldX = x;oldY = y;isPan = true;}public void pointerReleased(int x, int y) {oldX = x;oldY = y;isPan = false;}}
}

Java ME引路蜂地图开发示例:第一个地图应用相关推荐

  1. Android studio 百度地图开发(3)地图导航

    Android studio 百度地图开发(3)地图导航 email:chentravelling@163.com 工程下载地址:http://blog.csdn.net/chentravelling ...

  2. 高德地图开发(三、地图marker点标记)

    高德地图开发(三.地图marker自定义点标记) 一.默认点标记 二.自定义点标记 一.默认点标记 // 创建一个 Marker 实例:var marker = new AMap.Marker({po ...

  3. 三维地图开发平台-支持离线地图开发

    Bigemap GIS Office 234 篇文章16 订阅 订阅专栏            更多示例代码:http://www.bigemap.com/offlinemaps/gl.html 1. ...

  4. 高德离线地图开发 java_使用离线地图-创建地图-开发指南-Android 地图SDK | 高德地图API...

    高德3D 地图 SDK支持离线地图功能.(2D 地图 SDK 不支持离线地图功能) 离线地图可满足在无网络环境下查看地图信息的需求,在设备本地有离线地图数据的情况下,SDK 会优先加载离线地图. 离线 ...

  5. android+高德地图教程,Android高德地图开发(三)地图简单操作

    一.概述 上一节中我们了解到地图的定位,图层切换,离线地图等基础操作,接下来学习地图的基本操作. 二.本章内容 --- 地图交互设置 --- 地图绘制 1.地图交互设置 在使用地图的时候,不可避免的会 ...

  6. 快速搭建离线地图开发环境(局域网地图开发工具)离线地图二次开发

         相关下载:For Linux版本下载   快速搭建离线地图开发环境     局域网地图服务   离线地图数据服务  二次开发 一.软件介绍     BIGEMAP离线地图服务器,提供一站式搭 ...

  7. Android引路蜂地图开发示例:叠加自定义图层

    在开发应用的过程中,常常需要在地图上需绘制一点自定义的兴趣点或是自定义的几何图形.引路蜂地图包中RasterMap最终提供的基实就是一张图片. protected void paint(Graphic ...

  8. java wed高德地图开发_java接入高德地图常用WEB API

    1.先看一下高德地图WEB API都有哪些内容 2.根据经经纬度查询高德地图省市区数据 /** *根据经纬度获取省市区 * @param lat * @return */ public static ...

  9. android百度地图定位文字表述,Android studio 百度地图开发(8)地图已标记POI点和搜索POI点的获取和利用...

    一.简要描述 百度地图的POI点可以分有两种:地图中已经标记的点和通过关键词搜索得到的POI点.对于这两种POI点,百度封装成了不同的类和接口来实现监听,下面简单讲一点. 二.地图中已标记POI点 首 ...

最新文章

  1. leetcode--下一个更大元素II--python
  2. AI业务强劲增长,百度迎来了“推卒过河”的纵横时刻
  3. 8266获取网络时间
  4. Java实验7 四、Java异常类(2)创建自己的日期错误异常类
  5. ubuntu 修改默认用户名_Tars框架在Ubuntu上的部署小结
  6. 通知NSNotificationCenter
  7. 【转】一步一步学Linq to sql(十):分层构架的例子
  8. Bip44确定性算法的Java实现库(Android和java平台都可以使用)
  9. 计算机酷睿处理器排行,英特尔酷睿处理器哪个型号好?2018年4月电脑CPU性能排名...
  10. 【面试题】单链表的操作1
  11. 对 云寻觅贴吧(http://tieba.yunxunmi.com/)的简要分析
  12. 抛物线交点式公式_初一年级二次函数公式:顶点式、交点式、两根式
  13. 团队协作方法之:高效使用任务故事墙
  14. SATA引脚定义与硬盘电源电压
  15. 2020第八届“泰迪杯”特等奖(基于 BERT 深度语言模型的“智慧政务”文本挖掘应用)
  16. 基于JAVA的网上花店销售系统的设计与实现(附:源码 论文 sql文件)
  17. 购物时,商品加入购物车的飞入效果
  18. 【web素材】13—43套大气的企业网站模板
  19. 监控系统zabbix相关
  20. HTML5响应式企业集团织梦模板,(自适应手机版)响应式企业集团通用类网站织梦模板 HTML5响应式大气通用企业织梦源码+PC+wap+利于SEO优化...

热门文章

  1. video 满屏显示_video作为背景全屏铺满问题
  2. 计算机组成原理R寄存器组,计算机组成原理实验的探讨论文(2)
  3. VS2022配置OpenGL+GLAD
  4. 【嵌入式开发教程8】手把手教你做平板电脑-Camera 驱动实验教程
  5. 前端架构设计第十一课 自动化构建部署和工具
  6. 虚幻引擎5亮点一览,下载学习资源汇总
  7. 系统解剖学 | 周围神经系统 | 脑神经
  8. Intel cas 百度云 备份
  9. ZK的currentElapsedTime
  10. 【Mockplus使用技巧】怎样在Mockplus中锁定背景