首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

LWUIT引路蜂map开发示例:第一个map应用

2012-08-08 
LWUIT引路蜂地图开发示例:第一个地图应用依旧采用NetBean作为开发IDE,创建一个LwuitGISEngineTutorial项目

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

依旧采用NetBean作为开发IDE,创建一个LwuitGISEngineTutorial项目,将引路蜂地图开发包libgisengine.jar 和LWUIT开发包 LWUIT.jar复制到lib子目录下,并作为外部Jar库文件添加到项目中。将LWUITTheme.res 和 Licence文件guidebee.lic 放在res 子目录下,并将res目录添加到项目中。

LWUIT引路蜂map开发示例:第一个map应用

 

为避免重复,就示例共用的代码设计一个基类,MapDemoLWUIT,并从LWUIT库的Form派生一个子类MapCanvas用来显示地图

//------------------------------------------//                         COPYRIGHT 2011 GUIDEBEE//                           ALL RIGHTS RESERVED.//                     GUIDEBEE CONFIDENTIAL PROPRIETARY///////////////////////////////////// REVISIONS ////////////////////////////////// Date       Name                 Tracking #         Description// ---------  -------------------  ----------         --------------------------// 11FEB2011  James Shen                       Initial Creation//////////////////////////////////////////////////////////////////////////////////--------------------------------- PACKAGE ------------------------------------package com.pstreets.gisengine.demo;//--------------------------------- IMPORTS ------------------------------------import java.io.IOException;import javax.microedition.midlet.MIDlet;import com.sun.lwuit.Display;import com.sun.lwuit.Form;import com.sun.lwuit.Image;import com.sun.lwuit.plaf.UIManager;import com.sun.lwuit.util.Resources;import com.sun.lwuit.Graphics;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.MapClient;import com.mapdigit.gis.raster.MapTileDownloadManager;import com.mapdigit.licence.LicenceManager;import com.pstreets.gisengine.demo.lwuit.drawing.LWUITGraphicsFactory;import com.sun.lwuit.Painter;import com.sun.lwuit.geom.Rectangle;//[------------------------------ MAIN CLASS ----------------------------------]//--------------------------------- REVISIONS ----------------------------------// Date       Name                 Tracking #         Description// --------   -------------------  -------------      --------------------------// 11FEB2011  James Shen                       Initial Creation/////////////////////////////////////////////////////////////////////////////////** * Base class for all Map Demos on LWUIT. * <hr><b>© Copyright 2011 Guidebee, Inc. All Rights Reserved.</b> * @version     1.00, 11/02/11 * @author      Guidebee Pty Ltd. */public abstract class MapDemoLWUIT extends MIDlet implements IReaderListener,        IMapDrawingListener {    protected MapClient map;    protected MapTileDownloadManager mapTileDownloadManager;    protected IImage mapImage;    protected IGraphics mapGraphics;    protected MapCanvas canvas;    public MapDemoLWUIT() {        try {            LicenceManager licenceManager = LicenceManager.getInstance();            long keys[] = {0x34ba283b8daeb659L, -0x53c811f9da86e998L,            -0x34ba25c3c581521eL, 0xf15df9fc7e45628L, 0x6a4ece44296c0287L,            0x4ab0cff532902b1cL,};            licenceManager.addLicence("GuidebeeMap_JavaME", keys);        } catch (Exception ex) {            ex.printStackTrace();        }    }    protected void init() {        Display.init(this);        try {            Resources r = Resources.open("/javaTheme.res");            UIManager.getInstance().setThemeProps(                    r.getTheme(r.getThemeResourceNames()[0]));        } catch (IOException ex) {            ex.printStackTrace();        }        //set the graphics factory        MapLayer.setAbstractGraphicsFactory(LWUITGraphicsFactory.getInstance());        mapImage = MapLayer.getAbstractGraphicsFactory()                .createImage(Display.getInstance().getDisplayWidth(),                Display.getInstance().getDisplayHeight());        mapGraphics = mapImage.getGraphics();        //Create the Digital Map objects.        mapTileDownloadManager = new MapTileDownloadManager(this);        map = new MapClient(1024, 1024, mapTileDownloadManager);        map.setScreenSize(Display.getInstance().getDisplayWidth(),                Display.getInstance().getDisplayHeight());        map.start();        map.setMapDrawingListener(this);        //Creat the main form.        canvas = new MapCanvas("Hello world");    }    ////////////////////////////////////////////////////////////////////////////    //--------------------------------- REVISIONS ------------------------------    // Date       Name                 Tracking #         Description    // ---------  -------------------  -------------      ----------------------    // 11FEB2011  James Shen                           Initial Creation    ////////////////////////////////////////////////////////////////////////////    /**     * Used instead of using the Resources API to allow us to fetch locally     * downloaded     * resources     *     * @param name the name of the resource     * @return a resources object     */    public Resources getResource(String name) throws IOException {        return Resources.open("/" + name + ".res");    }    public void pauseApp() {    }    public void destroyApp(boolean unconditional) {        map.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 sub class of Form.     */    protected class MapCanvas extends Form {        MapCanvas(String title) {            super(title);                   }        public void paintBackground(Graphics g){             map.paint(mapGraphics);                g.drawImage((Image) mapImage.getNativeImage(), 0,                    0);        }        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;        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;        }    }}


基类MapDemoLWUIT正确设置引路蜂License,并创建RasterMap地图。有了这些基类,第一个地图应用就非常简单,下面的例子显示中国南京地图。地图类型为Bing中国地图,缩放级别为13级。

package com.pstreets.gisengine.demo.lwuit;//--------------------------------- IMPORTS ------------------------------------import com.mapdigit.gis.geometry.GeoLatLng;import com.mapdigit.gis.raster.MapType;import com.pstreets.gisengine.demo.MapDemoLWUIT;public class HelloWorldLWUIT extends MapDemoLWUIT {    public void startApp() {        init();        canvas.show();        GeoLatLng center = new  GeoLatLng(32.0616667, 118.7777778);        map.setCenter(center, 13, MapType.MICROSOFTCHINA);    }   }

LWUIT引路蜂map开发示例:第一个map应用

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

热点排行