前段时间需要使用百度map做一个发射信号的项目,在地图上需要体现出扇形的发射效果,查了一些资料,百度地图的api没有直接可以画扇形的方法,不过可以使用画多边形的方法来画扇形,扇形是圆形的一部分,这就需要给出圆心的坐标,半径,夹角等信息,根据这些信息计算出圆弧上的点坐标,画出完整的扇形。
直接上代码。
//以画多边形区域的方法画扇形区域 画出以point2点为圆心,半径为radius,夹角从sDegree到eDegree的扇形
function Sector1(point2, radius, sDegree, eDegree, strokeColour, strokeWeight, Strokepacity, fillColour, fillOpacity, opts) {
var points = []; //创建构成多边形的点数组
var step = ((eDegree - sDegree) / 10) || 10; //根据扇形的总夹角确定每步夹角度数,最大为10
points.push(point2);
for (var i = sDegree; i < eDegree + 0.001; i += step) { //循环获取每步的圆弧上点的坐标,存入点数组
points.push(EOffsetBearing(point2, radius, i));
}
points.push(point2);
//根据构成的点数组以及其他参数画多边形
var polygon = new BMap.Polygon(
points
, { strokeColor: strokeColour,