当前位置: 首页 > news >正文

[J2ME]如何替换Google Map静态地图自带的Marker

要替换Google Map静态图片中缺省的Marker为您自己的图标,需要使用

javax.microedition.lcdui.Graphics.drawImage(Image img, int x, int y, int anchor)

其中anchor为图像在屏幕上的停靠点。

int

常量

相当(x,y)

0或20

Graphics.SOLID

或Graphics.LEFT|Graphics.TOP

图片左上角为(x,y)


3

Graphics.DOTTED|Graphics.VCENTER

或Graphics.HCENTER|Graphics.VCENTER

图片中心为(x,y)

6

Graphics.LEFT|Graphics.VCENTER

图片左边中点为(x,y)

10

Graphics.RIGHT|Graphics.VCENTER

图片右边中点为(x,y)

17

Graphics.DOTTED|Graphics.TOP

或Graphics.HCENTER|Graphics.TOP

图片上边中点为(x,y)

24

Graphics.RIGHT|Graphics.TOP

图片右上角为(x,y)

33

Graphics.BOTTOM|Graphics. DOTTED

或Graphics.BOTTOM|Graphics.HCENTER

图片下边中点为(x,y)

36

Graphics.BOTTOM|Graphics.LEFT

图片左下角为(x,y)

40

Graphics.BOTTOM|Graphics.RIGHT

图片右下角为(x,y)

然后需要把Marker的经纬度转换成屏幕坐标,可以使用如下的函数:

public static boolean map2screen(double mx,double my,YPoint pt,double cx,double cy,YRect rt,int zoom)
{
if(Math.abs(cx-0.00001)<0.0001 && Math.abs(cy-0.00001)<0.0001)
return false;

double size = MyMath.pow(2,zoom);
double spanY = 360.0/size*rt.width()/256;
double spanX = 360.0/size*rt.height()/256;
pt.y = (int) (((cx - mx) / spanX + 0.5) * rt.height());
pt.x = (int) (((my - cy) / spanY + 0.5) * rt.width());

return true;
}

最后在你的Canvas paint函数中绘制这个图标:

MyRect rt = new MyRect(0,0,this.getHeight(),this.getWidth());
MyUtils.map2screen(slatitude,slongitude,mypos,latitude,longitude,rt,zoom);
g.drawImage(imgPos, mypos.x, mypos.y, Graphics.BOTTOM|Graphics.DOTTED);

相关文章:

  • 2020牛客暑期多校第五场 E - Bogo Sort(思维/LCM)
  • 青蛙故事的感悟
  • 2020牛客暑期多校第五场 I - Hard Math Problem(思维)
  • 最近一周内央视的三个错误
  • 洛谷P1714 切蛋糕(单调队列经典问题)
  • 磁盘文件的正常读写与异步读写
  • 洛谷P1725 琪露诺(单调队列+dp)
  • Linux wait_on_buffer函数研究
  • POJ - 2796 Feel Good(经典单调栈)
  • 基于Linux0.11源代码的操作系统内核典型处理过程分析1
  • POJ - 3494 Largest Submatrix of All 1’s(单调栈+降维)
  • 在批处理文件中实现按日期命名的目录迁移
  • HDU - 6806 Equal Sentences(dp)
  • UltraWinGrid自适应列宽/行高
  • HDU - 6812 Kindergarten Physics(分块/规律)
  • 自己简单写的 事件订阅机制
  • 【5+】跨webview多页面 触发事件(二)
  • canvas 五子棋游戏
  • express如何解决request entity too large问题
  • Java深入 - 深入理解Java集合
  • Laravel 菜鸟晋级之路
  • Promise面试题2实现异步串行执行
  • Python十分钟制作属于你自己的个性logo
  • Spring Boot快速入门(一):Hello Spring Boot
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • Vue2.x学习三:事件处理生命周期钩子
  • Web设计流程优化:网页效果图设计新思路
  • 翻译--Thinking in React
  • 给github项目添加CI badge
  • 聚类分析——Kmeans
  • 前端
  • 设计模式(12)迭代器模式(讲解+应用)
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 我的zsh配置, 2019最新方案
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 自制字幕遮挡器
  • 仓管云——企业云erp功能有哪些?
  • ​一些不规范的GTID使用场景
  • ​用户画像从0到100的构建思路
  • #QT项目实战(天气预报)
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (区间dp) (经典例题) 石子合并
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (已解决)什么是vue导航守卫
  • .net core webapi 大文件上传到wwwroot文件夹
  • .Net IE10 _doPostBack 未定义
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET/C# 使窗口永不获得焦点
  • .Net小白的大学四年,内含面经
  • @Autowired标签与 @Resource标签 的区别
  • @拔赤:Web前端开发十日谈
  • [ NOI 2001 ] 食物链