`
lyunabc
  • 浏览: 529791 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

Blackberry引路蜂地图开发示例:叠加自定义图层

 
阅读更多

在开发应用的过程中,常常需要在地图上需绘制一点自定义的兴趣点或是自定义的几何图形。引路蜂地图包中RasterMap最终提供的基实就是一张图片。

protected void paint(Graphics g) {             
    map.paint(mapGraphics);             
 g.drawImage((Image) mapImage.getNativeImage(), 0, 0, 0);         
 //start drawing your own sharps or images.             
 ... …  
}


所以一个简单的方法是绘制完地图后,你可以使用任何绘图方法在地图绘制任何自定义的图形或是图象。
这里需要注意的是坐标变换,RasterMap采用的是经纬度坐标,而屏幕显示采用的屏幕坐标,RasterMap提供了坐标转换的方法:fromScreenPixelToLatLng 坐屏幕坐标转换成地图经纬度坐标。fromLatLngToScreenPixel 从经纬度坐标转换成屏幕坐标。
下面给出的例子是采用派生MapLayer子类的方法,RasterMap是 MapLayerContainer的子类,可以用来管理多个地图层。这些图层从下到上相当于透明纸一层一层叠加形成最终显示的地图。
例子中显示几个自定义兴趣点,和一个三角形,并中地图中心显示十字标。

//--------------------------------- PACKAGE ------------------------------------ 
package com.pstreets.gisengine.demo.rim; 
  
//--------------------------------- IMPORTS ------------------------------------ 
import com.mapdigit.gis.MapLayer; 
import com.mapdigit.gis.drawing.IGraphics; 
import com.mapdigit.gis.geometry.GeoLatLng; 
import com.mapdigit.gis.geometry.GeoPoint; 
import com.mapdigit.gis.raster.MapType; 
import com.pstreets.gisengine.demo.MapDemoRIM; 
  
//[------------------------------ MAIN CLASS ----------------------------------] 
/** 
 * map overlay 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 MapOverlayRIM extends MapDemoRIM { 
  
    OverLayMapLayer mapLayer; 
    /** 
     * 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. 
        MapOverlayRIM theApp = new MapOverlayRIM(); 
        theApp.enterEventDispatcher(); 
    } 
  
    public MapOverlayRIM() { 
        init(); 
        pushScreen(canvas); 
        GeoLatLng center = new GeoLatLng(32.0616667, 118.7777778); 
        map.setCenter(center, 10, MapType.GOOGLECHINA); 
        mapLayer = new OverLayMapLayer(canvas.getWidth(), 
                canvas.getHeight()); 
        map.addMapLayer(mapLayer); 
    } 
  
    class OverLayMapLayer extends MapLayer { 
  
        GeoLatLng pt1 = new GeoLatLng(32.345281, 118.84261); 
        GeoLatLng pt2 = new GeoLatLng(32.05899, 118.62789); 
        GeoLatLng pt3 = new GeoLatLng(32.011811, 118.798656); 
  
        public OverLayMapLayer(int width, int height) { 
            super(width, height); 
        } 
  
        public void paint(IGraphics graphics, int offsetX, int offsetY) { 
            drawCursor(graphics); 
            drawTriangle(graphics); 
            drawPoint(graphics, pt1); 
            drawPoint(graphics, pt2); 
            drawPoint(graphics, pt3); 
  
        } 
  
        public void drawTriangle(IGraphics g) { 
            GeoPoint ptOnScreen1 = map.fromLatLngToScreenPixel(pt1); 
            GeoPoint ptOnScreen2 = map.fromLatLngToScreenPixel(pt2); 
            GeoPoint ptOnScreen3 = map.fromLatLngToScreenPixel(pt3); 
            g.setColor(0x0000FF); 
  
            g.drawLine((int) ptOnScreen1.x, (int) ptOnScreen1.y, 
                    (int) ptOnScreen2.x, (int) ptOnScreen2.y); 
            g.drawLine((int) ptOnScreen2.x, (int) ptOnScreen2.y, 
                    (int) ptOnScreen3.x, (int) ptOnScreen3.y); 
            g.drawLine((int) ptOnScreen1.x, (int) ptOnScreen1.y, 
                    (int) ptOnScreen3.x, (int) ptOnScreen3.y); 
        } 
  
        public void drawPoint(IGraphics g, GeoLatLng pt) { 
            GeoPoint ptOnScreen = map.fromLatLngToScreenPixel(pt); 
            int x = (int) ptOnScreen.x; 
            int y = (int) ptOnScreen.y; 
            g.setColor(0x00FF00); 
            g.fillRect(x - 4, y - 4, 8, 8); 
  
        } 
  
        private void drawCursor(IGraphics g) { 
            int x =getMapWidth()/2; 
            int y =getMapHeight()/2 ; 
            g.setColor(0x205020); 
            g.drawRect(x - 4, y - 4, 8, 8); 
            g.drawLine(x, y - 6, x, y - 2); 
            g.drawLine(x, y + 6, x, y + 2); 
            g.drawLine(x - 6, y, x - 2, y); 
            g.drawLine(x + 6, y, x + 2, y); 
        } 
    } 
  
}


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

分享到:
评论

相关推荐

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

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

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

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

    黑莓GPRS地图黑莓GPRS地图

    使用于黑莓手机地图黑莓GPRS地图黑莓GPRS地图黑莓GPRS地图

    黑莓 开发 文档 整合

    1.BlackBerry MDS Studio技术综述 [文档说明]BlackBerry ...[文档说明]黑莓BlackBerry考试认证指南 文档名:BlackBerry_Certification_Program_Guide.pdf 文档全部为E文版,如果不感冒的,请不要下载了,浪费分数。

    黑莓新注566个域名:98系列杂米近500个.docx

    黑莓新注566个域名:98系列杂米近500个.docx

    java多商户源码-JDE-Samples:BlackBerryJDE示例

    java多商户源码BlackBerry:registered: JDE 示例 BlackBerry:registered: JDE Samples 项目是过去在 BlackBerry:registered: Java:registered: Development Environment 或 BlackBerry:registered: Java:registered:...

    [黑莓游戏开发学习][Learn BlackBerry Games Development]

    The BlackBerry: not as clumsy or as random as a blaster—an elegant device, for a more civilized age. In this book, Carol and Andrew give you the professional techniques you need to use music, 2D ...

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

    黑莓(BlackBerry)开发从入门到精通,一线黑莓应用开发人员经验集萃.· 首本全面介绍黑莓开发的中文技术书籍· 一线黑莓应用开发人员经验集萃· RIM中国区总裁鼎力推荐

    BlackBerry Widget 开发入门

    在进行Widget 开发之前,开发人员需要下载相应的开发工具,BlackBerry Widget SDK, 这个工 具提供了一些命令行工具可以用来打包编译Widget 工程。BlackBerry 也提供了为Eclipse 设 计的Web plug-in,通过这个plug-in,...

    GOOGLE SYNC 手机同步软件-黑莓8700

    Google Sync现在支持blackberry,iPhone、Windows Mobile手机,稍后会支持其他类型的手机,使用Google Sync后,系统会自动同步用户的Gmail联系人、Google Calendar时间到你的手机中,Sync使用Push技术,你在通讯录...

    黑莓手机开发学习教程

    黑莓开发的入门教程,提供了黑莓开发的案例教程,英文原版,有想学习黑莓开发的可以看看

    BlackBerry Java 开发环境安装及入门

    RIM (Research in Motion) 公司为BlackBerry 开发提供了多种开发平台,不同平台的开发 人员可以选择自己熟悉的开发工具开发BlackBerry 应用程序。本节以BlackBerry JDE Plug-In for Eclipse 为例描述了BlackBerry ...

    BlackBerry App World应用提交和其他商业服务

    历史信息 •2009年4月1日在美国、加拿大和英国发布 •2009年7月31日扩展至另外10个国家 •法语、意大利语、德语和西班牙语的本地化支持 ...•支持支付服务(应用内购买)和BlackBerry PlayBook应用提交

    手机Web应用开发平台PhoneGap.zip

    因此,目前开发商可以只 编写一次应用程序,然后在7个主要的移动平台和应用程序商店(app store)里进行发布,这些移动平台和应用程序商店包括:iOS、Android、BlackBerry、webOS、bada、Winodws Phone以及Symbian。...

    [黑莓高级开发]Advanced BlackBerry Development

    Advanced BlackBerry Development 350 pages | Apress (December 10, 2009) | ISBN: 1430226560 | PDF | 5.6 MB BlackBerry devices and applications are selling by the millions. As a BlackBerry developer, ...

    谷歌地图黑莓版

    谷歌地图黑莓版,很好用的,0S5版本。请大家下载。

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

    本人在学习黑莓过程中遇到了许多问题,网上资源又少。所以总结出来一个详细的入门教程,手把手叫你进入黑莓的世界,希望对大家有帮助。模拟器是9500系列.

    黑莓google地图

    黑莓google地图,手有黑莓,万路通,乐图。

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

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

Global site tag (gtag.js) - Google Analytics