android高德地图绘制多边形_android 高德地图画多边形,已知中心点 宽高画矩形 ,实际距离 千米转地图坐标距离...
项目中用到mapabc 绘制矩形区域。客户只能手动选择中心点,并填写区域的宽和高,切单位为km。要求实时显示规划区域。
记录笔记。
第一步找到地图绘制多边形api
polygon = map.addPolygon(new PolygonOptions()
.addAll(createRectangle(marker.getPosition(), 1, 1))//绘制多边形顶点坐标
.fillColor(0x1A1677FF)//填充颜色
.strokeColor(0xDE1677FF)//边界颜色
.strokeWidth(5));//边界宽度
我们已知顶点坐标和客户输入的宽高km 需要计算多边形的顶点坐标(矩形):
/**
* 生成一个长方形的四个坐标点
*/
private List createRectangle(LatLng center, double halfWidth,
double halfHeight) {
float distance = (float) Math.sqrt(halfWidth * halfWidth + halfHeight * halfHeight);//计算直角三角形斜边 。
float degree= getDegree(0.0,0.0,-halfWidth,0.0,-halfWidth,halfHeight);//计算三角形锐角角度
//生成四边形四个点坐标
return Arrays.asList(
getLatlng(distance, center,90-degree),
getLatlng(distance, center, 90+degree),
getLatlng(distance, center, 270-degree),
getLatlng(distance, center, 270+degree)
);
}
步骤1,通过宽高算矩形顶点到中心点的距离
float distance = (float) Math.sqrt(halfWidth * halfWidth + halfHeight * halfHeight);
步骤2,通过虚拟坐标轴定位计算y轴和矩形对角线的夹角
float degree= getDegree(0.0,0.0,-halfWidth,0.0,-halfWidth,halfHeight);
以虚拟坐标系的方式运用数学知识计算夹角
/**
* 在坐标系中计算两条相交线夹角
* @param vertexPointX 交点坐标
* @param vertexPointY
* @param point0X A点坐标
* @param point0Y
* @param point1X b点坐标
* @param point1Y
* @return
*/
private int getDegree(Double vertexPointX, Double vertexPointY, Double point0X, Double point0Y, Double point1X, Double point1Y) {
//向量的点乘
Double vector = (point0X - vertexPointX) * (point1X - vertexPointX) + (point0Y - vertexPointY) * (point1Y - vertexPointY);
//向量的模乘
double sqrt = Math.sqrt(
(Math.abs((point0X - vertexPointX) * (point0X - vertexPointX)) + Math.abs((point0Y - vertexPointY) * (point0Y - vertexPointY)))
* (Math.abs((point1X - vertexPointX) * (point1X - vertexPointX)) + Math.abs((point1Y - vertexPointY) * (point1Y - vertexPointY)))
);
//反余弦计算弧度
double radian = Math.acos(vector / sqrt);
//弧度转角度制
return (int) (180 * radian / Math.PI);
}
步骤3,通过地图中心点,实际距离(矩形顶点到中心点距离),及夹角计算出顶点在地图上的坐标。
getLatlng(distance, center,90-degree)
/**
*
* @param distance 距离
* @param latlngA 中心点坐标
* @param angle 夹角
* @return
*/
public static LatLng getLatlng(float distance, LatLng latlngA, double angle) {
return new LatLng(latlngA.latitude + (distance * Math.cos(angle * Math.PI / 180)) / 111,
latlngA.longitude + (distance * Math.sin(angle * Math.PI / 180)) / (111 * Math.cos(latlngA.latitude * Math.PI / 180))
);
}
我默认画的图为正方向显示。如果需要倾斜。在getLatlng(distance, center,90-degree) 第三个参数做手脚即可
如果是参照点为矩形的一个顶点,参照上面方法更简单。
android高德地图绘制多边形_android 高德地图画多边形,已知中心点 宽高画矩形 ,实际距离 千米转地图坐标距离...相关推荐
- 高德 android 多边形中心点,完美起航-android高德地图画多边形,已知中心点宽高画矩形,实际距离千米转地图坐标距离...
项目中用到mapabc 绘制矩形区域.客户只能手动选择中心点,并填写区域的宽和高,切单位为km.要求实时显示规划区域. 记录笔记. 第一步找到地图绘制多边形api polygon = map.addP ...
- vue2+高德地图绘制多个圆形覆盖物和多边形覆盖物
vue2+高德地图绘制圆形覆盖物以及多边形覆盖物 直接贴代码 直接贴代码 添加复选款 <el-checkbox v-model="checkedAri" @change=&q ...
- 地图绘制边界。高德。PPMAP。 鼠标点击经纬度坐标 。地图图标点点击弹窗窗口。地图图标点点击事件。
边界: == 第一种:绘制边界. 通过绘制多边形的API来绘制边界. 高德API:多边形 Polygon. 矢量图形-覆盖物-教程-地图 JS API | 高德地图API 将关键的边界轮廓 经纬度坐标 ...
- android宫格式布局,Android 自定义TextView实现宫格布局,Drawable添加图片并控制宽高...
上图: 需求: 宫格布局(宽高一致,在屏幕上高度始终更随宽度变化) 图片在上文字在下布局 可以控制图片的宽高 布局完成,废话不多说直接上代码: /** * 时 间 : 2019/7/22 0022 * ...
- android onresume时view,Android中为什么在onResume之前(包括onResume)获取不到View的宽高?...
已知点: 1.View绘制流程的起点是 ViewRootImpl#scheduleTraversals() : 2.在onCreate里的setContentView中 确定了布局文件中有哪些对象: ...
- Matlab绘制三维定限截面柱体;已知(隐)函数方程,绘制三维空间图形
文章目录 fimplicit3绘制三维隐函数 基本语法: 基础示例: fimplicit3绘制空间定限截面柱体 柱体的隐函数方程: 添加线条样式: 添加平面(截面)方程: 二型线积分-斯托克斯公式例题 ...
- 高德地图markevents_GitHub - mingxuWang/Map: 高德地图API二次封装
Map组件设计文档 组件设计目的 分析当前各业务方向(销售端.商城.数据可视化.TMS)内地图相关应用的地图功能使用情况,封装Map组件供给各业务向进行使用. 将高德地图API进行二次封装,降低地图相 ...
- 天地图(全国版)根据已知点集合绘制直线
场景: 最近又开始整天地图了,先前整的是福建省的,这次整全国版的(http://lbs.tianditu.gov.cn/),省级的和全国的天地图用的竟然是不一样的,国家搞一套,省级搞一套,市级不知道是 ...
- matlab画曲面二次,如何用matlab绘制二次B样条三维曲面(已知控制点和节点矢量)?...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 小弟初来乍到,现在需要用matlaB绘制二次B样条曲面,现在已知信息: 小弟做这个已经一个星期了,现在无任何进展,现在是万分着急,希望高手们给小弟指点一二 ...
最新文章
- 《抓住听众心理——演讲者要知道的100件事》一20.人们学习的最优长度是20分钟...
- iOS UI_APPEARANCE_SELECTOR
- Map集合 java
- 深度学习——NMS(非极大抑制)
- 预告 | 大咖Live X 数字绿土 CTO 赵宝林:高精度地图上车之路究竟还有多远?
- 关于51CTO民意调查之自主添加google广告代码的几点意见
- 计算机网络基础中职期中,中职计算机网络基础期中试卷
- likeshop搭建商城系统,一步到位
- 【Scratch】青少年蓝桥杯_每日一题_12.01_角色装扮
- 第十四周 项目一 二叉排序树
- 2007福布斯名人榜完全名单 巩俐收入盖过章子怡
- linux命令之cal详解
- C# DataGridView数据导出Excel文件
- java华氏温度与摄氏度的互相转换
- 入侵和攻击模拟(BAS)实践
- 【应用实例】基于单片机的激光相位测距仪
- Typora常用快捷键(MarkDown)
- java工程师的自我评价_Java开发工程师-自我评价怎么写(范文)
- AHCI导致启动win7蓝屏的解决
- Linux下的vim如何保存并退出
热门文章
- 激光雷达赛道“白刃战”?硅光芯片级FMCW技术进入量产周期
- python换脸完整程序_小 200 行 Python 代码做了一个换脸程序
- TP5.1 支付宝app支付 (沙箱本地测试)
- spring boot初始化完成时(两种方式)执行某种操作
- 科创人·和讯网CTO杨扬:技术独狼到业务驱动者的修行之道
- 一种Cortex-M内核中的精确延时方法
- 面向对象程序设计实验报告
- 云服务器cvm系统,cvm云服务器如何登录
- 智慧社区如何设计 智慧社区解决方案
- HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);出现异常