`
isiqi
  • 浏览: 16496853 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Blackberry引路蜂地图开发示例:第一个地图应用

 
阅读更多

使用BlackBerry JDE 6.0.0创建一个新的Workspace, RIMGISEngineTutorial. 首先添加一个新的Lib项目libGISEngine, 在其中添加引路蜂开发库。然后添加HelloWorldRIM Blackberry应用,将libGISEngine设为项目HelloWorldRIM的依赖库(Project Dependencies).

同样为简单起见,设计一个共用类MapDemoRIM作为后续例子的基类。

//--------------------------------- PACKAGE ------------------------------------
package com.pstreets.gisengine.demo;
 
//--------------------------------- IMPORTS ------------------------------------
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.RasterMap;
import com.mapdigit.licence.LicenceManager;
import com.pstreets.gisengine.demo.rim.drawing.RIMGraphicsFactory;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.system.Display;
import net.rim.device.api.ui.component.Menu;
import net.rim.device.api.ui.TouchEvent;
 
//[------------------------------ MAIN CLASS ----------------------------------]
/**
 * Base class for all Map Demos.
 * <hr><b>© Copyright 2011 Guidebee, Inc. All Rights Reserved.</b>
 * @version     1.00, 06/02/11
 * @author      Guidebee Pty Ltd.
 */
public abstract class MapDemoRIM extends UiApplication implements IReaderListener,
        IMapDrawingListener {
 
    protected RasterMap map;
    protected MapTileDownloadManager mapTileDownloadManager;
    protected IImage mapImage;
    protected IGraphics mapGraphics;
    protected MapCanvas canvas;
 
    public MapDemoRIM() {
        try {
            LicenceManager licenceManager = LicenceManager.getInstance();
            //expires on Tue Mar 15 20:54:42 CST 2011
           long keys[] = {0x34ba283b8daeb659L, -0x53c811f9da86e998L,
            -0x34ba25c3c581521eL, 0xf15df9fc7e45628L, 0x6a4ece44296c0287L,
            0x4ab0cff532902b1cL,};
            licenceManager.addLicence("GuidebeeMap_JavaME", keys);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
 
    }
 
    public void init() {
        canvas = new MapCanvas();
        //set the graphics factory
        MapLayer.setAbstractGraphicsFactory(RIMGraphicsFactory.getInstance());
        mapImage = MapLayer.getAbstractGraphicsFactory()
                .createImage(Display.getWidth(),
                Display.getHeight());
        mapGraphics = mapImage.getGraphics();
        //Create the Digital Map objects.
        mapTileDownloadManager = new MapTileDownloadManager(this);
        try{
        map = new RasterMap(1024, 1024, mapTileDownloadManager);
    }catch(Exception e){}
        map.setScreenSize(Display.getWidth(),
                Display.getHeight());
        mapTileDownloadManager.start();
        map.setMapDrawingListener(this);
 
    }
 
    protected void createMenu(Menu menu, int instance){
    }
    public void closeApp() {
        mapTileDownloadManager.stop();
    }
 
    public void readProgress(int arg0, int arg1) {
        System.out.println(arg0 + "/" + arg1);
    }
 
    public void done() {
        if (canvas != null) {
            canvas.invalidate();
        }
    }
 
    protected class MapCanvas extends MainScreen {
 
        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);
            Bitmap bitmap=(Bitmap) mapImage.getNativeImage();
            g.drawBitmap(0,0,bitmap.getWidth(),bitmap.getHeight(),bitmap,0,0);
        }
        
        public void close(){
            closeApp();
        }
        
        protected boolean touchEvent(TouchEvent event){
            int action=event.getEvent();
          switch(action){
        case TouchEvent.DOWN:
                  oldX = event.getGlobalX(1);
            oldY = event.getGlobalY(1);
                    isPan=true;
                    break;
         case TouchEvent.UP:
                    oldX = event.getGlobalX(1);
            oldY = event.getGlobalY(1);
                    isPan=false;
                   break;
         case TouchEvent.MOVE :
                 if(isPan)
            {
            panMap(event.getGlobalX(1), event.getGlobalY(1));
            oldX = event.getGlobalX(1);
            oldY = event.getGlobalY(1);
            }
                    break;
         }
      return true;
        }
        protected void makeMenu(Menu menu, int instance){
            createMenu(menu,instance);
        }
    }
}

类MapDemoRIM派生于UiApplication,为Blackberry应用对象。MapCanvas派生于MainScreen,用于显示地图,并响应TouchEvent,可以平移地图。

有了这个基类,HelloWorldRIM就比较简单,下面的例子显示南京地图,缩放级别为13级,地图类型为Bing中国地图。

//--------------------------------- PACKAGE ------------------------------------
package com.pstreets.gisengine.demo.rim;
 
//--------------------------------- IMPORTS ------------------------------------
import com.mapdigit.gis.geometry.GeoLatLng;
import com.mapdigit.gis.raster.MapType;
import com.pstreets.gisengine.demo.MapDemoRIM;
 
//[------------------------------ MAIN CLASS ----------------------------------]
/**
 *  Hello world demo for Guidebee Map API on RIM platform.
 * <hr><b>© Copyright 2011 Guidebee, Inc. All Rights Reserved.</b>
 * @version     1.00, 06/02/11
 * @author      Guidebee Pty Ltd.
 */
public class HelloWorldRIM extends MapDemoRIM {
 
    /**
     * Entry point for application
     * @param args Command line arguments (not used)
     */
    public static void main(String[] args)
    {
        // Create a new instance of the application and make the currently
        // running thread the application's event dispatch thread.
        HelloWorldRIM theApp = new HelloWorldRIM();      
        theApp.enterEventDispatcher();
    }
    
    public HelloWorldRIM() {
        init();
        pushScreen(canvas);
        GeoLatLng center = new GeoLatLng(32.0616667, 118.7777778);
        map.setCenter(center, 13, MapType.MICROSOFTCHINA);
    }
    
}


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


分享到:
评论

相关推荐

    引路蜂地图开发包2.0 (Blackberry版)

    引路蜂地图开发包2.0 包含了 开发库 JavaDoc 示例代码 详细请参见 http://blog.csdn.net/guidebee/archive/2010/09/19/5895245.aspx

    谷歌地图黑莓版

    谷歌地图是全球知名的在线地图服务,由互联网巨头谷歌公司提供。这款应用以其强大的导航功能、实时交通信息和卫星影像而闻名。...通过正确的安装方法,他们依然可以享受到这一强大的地图应用带来的便利。

    电子地图开发资料

    世博信息亭作为一个地图查询系统,提供了全上海范围内的电子地图服务和公交指路服务系统,支持多种换乘路线策略查询,并优化了操作和界面,方便用户快速找到世博会场的路线。掌上世博则是一种基于手机应用的世博查询...

    如何为BlackBerry手机开发应用软件

    【如何为BlackBerry手机开发应用软件】 开发BlackBerry手机应用主要涉及两个关键步骤:安装必要的开发环境和编写Java代码。以下是对这两个步骤的详细说明:...不过,上述步骤仍然适用于早期BlackBerry设备的应用开发。

    phonegap开发示例服务器端开发

    通过PhoneGap,开发者可以编写一次代码,然后在多个操作系统上发布,如 iOS、Android、BlackBerry、webOS、Bada、Windows Phone 和 Symbian。其核心在于使用WebView(移动设备内置的浏览器组件)作为应用程序的基础...

    BlackBerry(黑莓)应用程序开发者指南(基础+高级)

    了解如何配置环境变量和设置项目工程是开发的第一步。 2. **BlackBerry API**:BlackBerry提供了丰富的API,包括用户界面组件、网络通信、数据存储、事件处理等。开发者需要学习如何使用这些API来实现应用程序的...

    黑莓全系列 谷歌地图 Google map 4.4.0 ROM4.5

    标题中的“黑莓全系列 谷歌地图 Google map 4.4.0 ROM4.5”指的是适用于黑莓手机的谷歌地图应用的一个特定版本,即4.4.0,这个版本是为运行在BlackBerry OS 4.5系统上的设备设计的。黑莓手机是由加拿大公司RIM...

    黑莓GPRS地图黑莓GPRS地图

    在IT行业中,移动设备的导航和地图应用是不可或缺的一部分,特别是对于早期的黑莓手机用户而言。"黑莓GPRS地图"是专为黑莓设备设计的一款地图应用程序,利用GPRS(General Packet Radio Service)数据服务来提供实时...

    黑莓blackberry第三方输入法:百度输入法

    1.解压BaiduInput_blackberry_v1.0.0.7.zip文件,用黑莓桌面管理器加载baiduinput.alx,在安装时务必把默认的四个选项都打上勾。 2.安装完毕后会在出现一个百度记事本和一个百度输入法图标。 3.百度记事本是用在第三...

    blackberry java开发相关资料汇总

    **标题解析:** "blackberry java开发相关资料汇总" 指的是这是一份关于使用Java语言进行BlackBerry智能手机应用开发的综合资源集合。BlackBerry JDE(Java Development Environment)是RIM公司(现名为BlackBerry ...

    黑莓全系列 谷歌地图 Google map 4.4.0 下载 -ROM4.6

    标题中的“黑莓全系列 谷歌地图 Google map 4.4.0 下载 -ROM4.6”指的是适用于黑莓手机的谷歌地图应用的一个特定版本,即4.4.0,它是为运行在BlackBerry OS 4.6系统的设备设计的。这个标题揭示了以下关键知识点: 1...

    黑莓开发文档_i 开发

    SDK提供了多种编程语言支持,如Java ME(Micro Edition)和 BlackBerry Native SDK,后者允许使用C++进行原生应用开发。 1. Java ME:这是最常见的开发方式,使用J2ME(Java 2 Platform, Micro Edition)的子集CLDC...

    黑莓(BlackBerry)开发从入门到精通

    《黑莓(BlackBerry)开发从入门到精通》是一本专为希望涉足黑莓应用开发领域的初学者和专业开发者设计的指南。这本书汇集了一线黑莓应用开发人员的丰富经验和实用技巧,得到了RIM(Research In Motion,黑莓制造商)...

    黑莓google地图

    【黑莓Google地图】是一款专为黑莓手机用户设计的地图应用程序,它整合了谷歌强大的地图服务,让持有黑莓手机的用户能够随时随地享受精准的导航和位置查询功能。这款应用在当年是黑莓用户出行的重要工具,尤其对于...

    BlackBerry 开发指南

    BlackBerry 开发指南是针对那些想要为BlackBerry设备创建应用程序的开发者的重要参考资料。这份指南分为两卷,分别涵盖了基础和高级部分,旨在帮助开发者从入门到精通,掌握在BlackBerry平台上进行软件开发的关键...

    BlackBerry(黑莓)开发入门教程最新版

    在移动应用开发领域,BlackBerry(黑莓)曾经占据一席之地,尤其在商务用户中颇受欢迎。尽管近年来市场份额有所下降,但仍有开发者对其平台感兴趣,尤其是对于历史项目维护或特定用户群体的需求。本教程将引导你了解...

    黑莓手机开发学习教程

    - **Accessibility Demo**:一个包含多个示例,展示如何使用可访问性API的功能的样本应用程序。 - **设置指南**:提供了在Eclipse中和BlackBerry Java Development Environment (JDE)中设置示例应用程序的步骤。 ...

    黑莓PlayBook平台下的工程示例

    1. **基础示例**:展示如何设置和构建一个NDK项目,包括必要的构建文件(如Android.mk和Application.mk),以及如何配置BlackBerry Tablet OS SDK来编译和调试原生代码。 2. **库的使用**:可能包括如何创建和使用...

    黑莓 中文 开发文档

    4. **编程基础**:介绍BlackBerry应用开发的基础语言,通常是Java,包括变量、控制流、类和对象等概念。 5. **事件处理与多线程**:讲述如何处理用户输入事件,以及如何利用多线程技术在后台执行任务,提高应用性能...

Global site tag (gtag.js) - Google Analytics