日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

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

發布時間:2024/3/26 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java ME引路蜂地图开发示例:第一个地图应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下面的代碼顯示中國南京地圖

//------------------------------------------------------------------------------ // 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;}} }


?

  • 首先是設置使用許可(Licence),設置使用許可由二部分組成,一個是將licence文件(guidebee.lic)放在合適的目錄下,然后在程序中輸入正確的注冊碼。Ln 51-55
  • 前文說過,引路蜂地圖開發包不直接調用圖形相關方法,而是定義了一些接口函數,在使用時,需實現這些平臺相關的方法。例如在 Java ME平臺,MIDPFont, MIDPGraphics,MIDPGraphicsFactory,MIDPImage 實現了這些接口方法,在調用任務地圖相關方法,需要告訴地圖如何調用這些方法。MapLayer.setAbstractGraphicsFactory(MIDPGraphicsFactory.getInstance());則是用來設置平臺相關GraphicsFactory實現。Ln 64-67
  • 創建MapTileDownloaderManager 實例,MapTileDownloaderManager是用來管理工作線程以下載地圖圖片或是從本地地圖包中讀取地圖圖片。之后創建RasterMap 地圖實例,RasterMap使用MapTileDownloaderManager來獲取地圖圖片。Ln 70-Ln74
  • MapTileDownloaderManager.Start 啟動工作線程。注意在程序結束時,需調用Stop 方法來停止這些工作線程,如(6) Ln 77
  • 設置地圖中心點,這里設置是南京的經緯度坐標。地圖類型選擇是Google中國地圖,地圖包中定義了多達20多種不同的地圖可供選擇。地圖縮放級別為13級。1級最小,17級最大。 Ln 79 -80
  • 程序結束時,需調用Stop 方法來停止工作線程。 Ln 88
  • panDirection(dx,dy)用來平移地圖,將在后面介紹。 Ln 110
  • 在屏幕上顯示地圖。在這個應用中 MapCanvas 最終用來在屏幕上顯示地圖,每個程序都有一個UI界面,地圖最終總是要在屏幕上顯示的。這兩行代碼是將地圖復制到屏幕上。 Ln 119 -120
  • 地圖下載采取異步工作方式,也就是地圖圖片的讀取是通過工作線程在后臺工作,應用可以監視讀取圖片的進度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引路蜂地图开发示例:第一个地图应用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。