先上图:

image.png

首先我们只单说画扇形的需求

需求:把最佳123位置点显示在扇形区域内,(这里分两种情况:1扇形不跟随移动,这个就没什么了,初始画出来就行了,2,扇形跟随移动,初始肯定是显示在区域内的,随着定位点的移动,扇形跟随移动)

条件:画出扇形要有几个条件,两条边的夹角度数、中心点(即定位点)、半径

这里比较有争议的是两条边的夹角度数,根据需求和实际情况看是后台计算好返回还是前端来计算处理

下面接着上代码:

方法入口

//我这里直接传入的是百度地图sdk返回的定位夹度度数 angle =location.getDirection()

private void drawRadius(double angle) {

OverlayOptions op = new PolygonOptions()

.points(sector(new LatLng("纬度", "经度"), "半径参数", "开始角度angle-60","结束角度angle+60")

.stroke(new Stroke(0, Color.parseColor("#ffffff"))).fillColor(Color.parseColor("#201c3d6f"));

radiuOverlay = mBaiduMap.addOverlay(op);//把计算的扇形添加到百度地图上

}

词义

入口方法中的中文的方法需替换为所需参数:

经度纬度为百度定位所得,

开始结束角度:有两种方法:1、后台给出,2、根据百度地图sdk定位返回

angle =location.getDirection()

百度定位回调方法中的BDLocation location

location.getDirection()//获取到的方向信息,顺时针0-360

//这里拿到的只是一个角度数,需要用这个角度数获取范围,

//比如location.getDirection()-60,location.getDirection()+60;

这样就得出一个120度范围的距离了,然后以这两个边为扇形的两边通过算法得出整个扇形的两边及头部的弧形坐标

.stroke()方法 是定义画笔的大小、颜色

.fillColor() 定义区域内的填充颜色

方法拆解

画扇形用的是百度地图SDK中的new PolygonOptions() 多边形类方法

其中 op.points(...)是传递给百度地图SDK一个经纬度list 用来画图形的边的,那么sector()方法就是计算这个扇形的所经过的边的坐标咯,方法如下:

//以画多边形区域的方法画扇形区域

// 画出以point点为圆心,radius为半径,夹角从startAngle到endAngle的扇形

public List sector(LatLng point, long radius, int startAngle, int endAngle) {

//创建构成多边形的坐标点数组

List sectorPoints = new ArrayList<>();

//根据扇形的总夹角确定每步夹角度数,最大为10

int step = (endAngle- startAngle)/10 > 10 ? 10 : endAngle- startAngle;

sectorPoints.add(point);

for (int i = sDegree; i < eDegree + 0.001; i ++) {

//循环获取每步的圆弧上点的坐标,存入点数组

sectorPoints.add(offsetBearing(point, radius, i));

}

return sectorPoints;

}

圆弧所需的坐标点,(计算出弧度的坐标点以LatLng 经纬度返回)

//扇形的圆弧坐标算法

public LatLng offsetBearing(LatLng point, long dist, int bearing) {

//计算1经度与原点的距离

double lngConv = DistanceUtil.getDistance(point, new LatLng(point.latitude, point.longitude + 0.1));

//计算1纬度与原点的距离

double latConv = DistanceUtil.getDistance(point, new LatLng(point.latitude + 0.1, point.longitude));

//正弦计算待获取的点的纬度与原点纬度差

double lat = dist * Math.sin(bearing * Math.PI / 180) / latConv;

//余弦计算待获取的点的经度与原点经度差

double lng = dist * Math.cos(bearing * Math.PI / 180) / lngConv;

return new LatLng(point.latitude + lat, point.longitude + lng);

}

最后可以定义个Overlay 对象

private Overlay radiuOverlay;

radiuOverlay = mBaiduMap.addOverlay(op);//对应入口方法中 (把计算的扇形添加到百度地图上)

然后可以动态操作,如:

if (radiuOverlay != null) {

radiuOverlay.remove();//把扇形移除

}

以上就是画扇形的处理方法,并不复杂,欢迎各位道友指正,匆喷_(呵呵哒)

android百度地图画扇形覆盖,Android百度地图画扇形相关推荐

  1. 安卓巴士总结了近百个Android优秀开源项目,覆盖Android开发的每个领域_拔剑-浆糊的传说_新浪博客...

    http://www.apkbus.com/android-17627-1-1.html 安卓巴士总结了近百个Android优秀开源项目,覆盖Android开发的每个领域 bayou 发表于 2011 ...

  2. [转] 安卓巴士总结了近百个Android优秀开源项目,覆盖Android开发的每个领域

    Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧和创造力.学习开源代码是掌握技术的一个 ...

  3. 总结了近百个Android优秀开源项目,覆盖Android开发的每个领域

    Android 开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧和创造力.学习开源代码是掌握技术的一 ...

  4. 近百个Android优秀开源项目,覆盖Android开发的每个领域

    http://code.google.com/p/andrico/ Android PDF 阅读器 http://sourceforge.net/projects/andpdf/files/ 个人记账 ...

  5. 总结了近百个Android优秀开源项目,覆盖Android开发的每个角落。 .

    Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧和创造力.学习开源代码是掌握技术的一个 ...

  6. 安卓巴士总结了近百个Android优秀开源项目,覆盖Android开发的每个领域

    Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧和创造力.学习开源代码是掌握技术的一个 ...

  7. 总结了近百个Android优秀开源项目,覆盖Android开发的每个角落

    Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧和创造力.学习开源代码是掌握技术的一个 ...

  8. android百度地图更换定位图标,android百度地图定位,改变MyLocationOverlay默认图标(原始为蓝色点)(两种方法)...

    开放地图API无外乎google ,百度,高德等.其它的还有很多,不过比较好用的就这三种了,如果不需要出国(台湾例外),则最好使用百度地图,性能比高德好的多,无聊的时候自己可以测试测试.. 下面我简单 ...

  9. 【Android】3.0 第3章 百度地图及其应用--预备知识

    分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 一.概述 这一章先来点有意思的百度地图应用示例,然后再分章详细介绍用C#开发Android App的各种基本技 ...

最新文章

  1. 查看mysql当前表使用的存储引擎(转)
  2. 产品经理心中都住着一个段子手?看看他们如何相爱相撕的...
  3. String字符串相等判断
  4. iOS 修改UITabBar的默认点击行为
  5. 51CTO的技术门诊谈OSSIM
  6. C++ 字符串编程训练2
  7. Lotus中关于字符串处理的函数汇总
  8. my97Date如何多选日期且无重复日期
  9. 对象取值操作Object.values()
  10. Lagrangian乘子法 对偶问题 KKT条件 Slater条件 与凸优化
  11. python中位数代码_python求中位数
  12. js 实现简单todo效果
  13. 怎样保护计算机桌面不被更改,Win7屏幕保护程序不能修改怎么办 win7无法设置电脑屏幕保护程序如何解决...
  14. python将视频转为图片
  15. java全栈系列之JavaSE-稀释数组029
  16. Get请求,参数为@RequestBody的http请求
  17. phpcms v9 邀请用户注册自动获取积分奖励
  18. 最值得收藏——免费ppt模板网站
  19. 虹科案例之安全性防护平台-高通QCMAP发现的主要漏洞
  20. 结构建模设计——Solidworks软件之草图绘制基础图形工具总结(绘制直线、矩形、圆、槽、圆弧、圆角等)

热门文章

  1. python语言程序设计基础上海交通大学_北京交通大学:Python语言程序设计
  2. 使用react 高阶组件withRouter
  3. PymySQL安装以及解决报错
  4. OSChina 周五乱弹 —— 买个 6s 送老师
  5. windows服务器指定IP地址才能进行远程访问
  6. 腾讯光子游戏工作室推出加班管理机制,保障双休,要求员工 21 点前离开工位。你怎么看?...
  7. objdump 反汇编 vmlinux详解
  8. php sphinx使用教程,使用PHP+Sphinx建立高效的站内搜索引擎
  9. vue 美食杰 发布菜谱
  10. php+mysql求职招聘人才网站