`
isiqi
  • 浏览: 16493589 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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 java开发相关资料汇总

    5. **示例应用开发**:通过示例代码学习如何初始化Mapfield,如何加载地图数据,如何响应用户交互,如何添加自定义图层和标记。 6. **源码分析**:阅读和理解示例代码可以帮助开发者了解如何在实际项目中应用...

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

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

    phonegap开发示例服务器端开发

    通过PhoneGap,开发者可以编写一次代码,然后在多个操作系统上发布,如 iOS、Android、BlackBerry、webOS、Bada、Windows Phone 和 Symbian。其核心在于使用WebView(移动设备内置的浏览器组件)作为应用程序的基础...

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

    《黑莓(BlackBerry)开发从入门到精通》是一本专为希望涉足黑莓应用开发领域的初学者和专业开发者设计的指南。这本书汇集了一线黑莓应用开发人员的丰富经验和实用技巧,得到了RIM(Research In Motion,黑莓制造商)...

    BlackBerry 开发指南

    BlackBerry 开发指南是针对那些想要为BlackBerry设备创建应用程序的开发者的重要参考资料。这份指南分为两卷,分别涵盖了基础和高级部分,旨在帮助开发者从入门到精通,掌握在BlackBerry平台上进行软件开发的关键...

    黑莓PlayBook平台下的工程示例

    在提供的压缩包“blackberry-NDK-Samples-de83054”中,我们可以期待找到一系列的工程示例,这些示例涵盖了NDK开发的基本用法和常见技术。可能包含的内容有: 1. **基础示例**:展示如何设置和构建一个NDK项目,...

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

    **BlackBerry(黑莓)开发入门教程最新版** 在移动应用开发领域,BlackBerry(黑莓)曾经占据一席之地,尤其在商务用户中颇受欢迎。尽管近年来市场份额有所下降,但仍有开发者对其平台感兴趣,尤其是对于历史项目...

    黑莓开发期刊2007

    《黑莓开发期刊2007》是一份专注于黑莓平台开发的专业出版物,由黑莓官方发布,每年发行两期。这份期刊旨在为开发者提供最新的技术资讯、开发技巧和实践经验,帮助他们更好地利用黑莓操作系统(BlackBerry OS)进行...

    黑莓 开发 文档 整合

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

    黑莓开发文档_i 开发

    在进入黑莓应用程序开发的世界之前,首先需要对这个平台有一个基本的理解。黑莓,由加拿大RIM公司(现称为BlackBerry Limited)开发,是一款专为商务人士设计的智能手机,以其强大的电子邮件、日程管理和安全功能而...

    电子地图开发资料

    电子地图开发资料涉及的知识点非常多,主要集中在地理信息系统(GIS)的应用、开发和为企业提供的解决方案上。接下来将详细解析该文档中所包含的知识点。 首先,文档介绍了上海为卓信息科技有限公司,这是一家专业...

    谷歌地图黑莓版

    在黑莓手机平台上,谷歌地图也得到了很好的支持,尤其是针对OS5版本的系统,这使得黑莓用户也能享受到与Android或iOS设备相似的定位和导航体验。 在黑莓手机上安装谷歌地图,你需要的是两个关键文件:`GoogleMaps....

    BlackBerry开发平台及入门介绍

    ### BlackBerry开发平台及入门知识点详解 #### BlackBerry开发平台概述 BlackBerry开发平台是RIM(Research In Motion)推出的一套全面且高效的移动开发环境,它主要用于构建针对BlackBerry设备的应用程序和服务。...

    黑莓学习笔记之二--布局管理器Manager

    在IT行业中,尤其是在移动应用开发领域,理解和掌握各种布局管理器是至关重要的。本文将以“黑莓学习笔记之二--布局管理器Manager”为主题,深入探讨黑莓平台上的布局管理器及其使用技巧。 黑莓操作系统...

    黑莓开发期刊2006

    《黑莓开发期刊2006》是一份专注于黑莓平台开发的专业出版物,由黑莓官方发布,每年发行两期。这份期刊旨在为开发者提供最新的技术资讯、开发技巧和实践经验,帮助他们更好地利用黑莓操作系统(BlackBerry OS)进行...

    如何为BlackBerry手机开发应用软件

    - **BlackBerry JDE**:这是专门用于BlackBerry设备的开发环境,包含了完整的文档、代码示例和模拟器。安装时选择“完整”选项,可以获取客户端和服务器模拟器,这对于在实际设备可用之前测试应用程序非常有用。...

    黑莓 SDK 介绍,帮助希望从事黑莓开发的朋友

    该插件支持Eclipse集成开发环境,内置了一个完整的黑莓智能手机模拟器,使得开发者能够在熟悉且功能强大的Eclipse环境下开发和测试黑莓应用。 - **特点**: - **使用MIDP 2.0和CLDC 1.1**:支持标准的Java开发框架...

Global site tag (gtag.js) - Google Analytics