Java ME引路蜂地图开发示例:叠加自定义图层
来源:互联网 发布:linux root 编辑:程序博客网 时间:2024/06/02 13:00
在开发应用的过程中,常常需要在地图上需绘制一点自定义的兴趣点或是自定义的几何图形。引路蜂地图包中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的子类,可以用来管理多个地图层。这些图层从下到上相当于透明纸一层一层叠加形成最终显示的地图。
例子中显示几个自定义兴趣点,和一个三角形,并中地图中心显示十字标。
public class MapOverlayMIDP extends MapDemoMIDP { OverLayMapLayer mapLayer; public void startApp() { init(); GeoLatLng center = new GeoLatLng(32.0616667, 118.7777778); map.setCenter(center, 9, MapType.GOOGLECHINA); Display.getDisplay(this).setCurrent(canvas); 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 = getScreenWidth() / 2; int y = getScreenHeight() / 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); } }}
- Java ME引路蜂地图开发示例:叠加自定义图层
- Android引路蜂地图开发示例:叠加自定义图层
- LWUIT引路蜂地图开发示例:叠加自定义图层
- Blackberry引路蜂地图开发示例:叠加自定义图层
- Java ME引路蜂地图开发示例:离线地图示例
- Java ME引路蜂地图开发示例:设置地图类型
- Java ME引路蜂地图开发示例:地图平移
- Java ME引路蜂地图开发示例:选择地图服务
- Java ME引路蜂地图开发示例:放大、缩小
- Java ME引路蜂地图开发示例:地址查询
- Java ME引路蜂地图开发示例:路径查询
- Java ME引路蜂地图开发示例:本地查询
- Java ME引路蜂地图开发示例:IP地址查询
- Java ME引路蜂地图开发示例:地址反编码
- Java ME引路蜂地图开发示例:第一个地图应用
- 引路蜂地图API:Java ME地图应用开发环境
- 百度地图叠加自定义图层示例
- Java SE引路蜂地图开发示例
- Android 用户界面---拖放(Drag and Drop)(二)
- 多线程开发的捷径:构建Java并发模型框架
- vb.net常用函数
- 使用Fabric自动化你的任务
- Android 用户界面---拖放(Drag and Drop)(三)
- Java ME引路蜂地图开发示例:叠加自定义图层
- css调用两个class
- Maven:No goals have been specified for this build
- 40 strategy pattern
- 离线地图生成工具结构图
- 开发你自己的XMPP 续 - Openfire 插件开发
- 详解公钥、私钥、数字证书的概念
- 开发你自己的XMPP 续 - Spark 插件开发
- 六、VIM使用手册--在vim中加载插件taglist