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

来源:互联网 发布:淘宝小二删除追加 编辑:程序博客网 时间:2024/06/10 03:42

使用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下载


 

 

原创粉丝点击