下面的代码显示中国南京地图
//------------------------------------------------------------------------------ // 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 factory MapLayer.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; } } }
在后面的示例中,一些共同的代码不再重复,将设计一个基类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 factory MapLayer.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; } } }