公司项目有在电子地图上绘制扇形的需求,因为只是一个小需求,跟GIS还是差得远。
google maps v3和百度地图都没有封装扇形多边形的方法,自己在网上找了个google maps v2的算法拿过来略作修改,应用到的百度地图,虽然效果不完美,但总算也满足需求了。
js部分代码:
var map = new BMap.Map("container");
var point = new BMap.Point(116.404, 39.915);
map.centerAndZoom(point, 11);
var markers = [];
function Sector1(point2, radius, sDegree, eDegree, strokeColour, strokeWeight, Strokepacity, fillColour, fillOpacity, opts) {
var points = [];
var step = ((eDegree - sDegree) / 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, strokeWeight:strokeWeight, strokeOpacity:Strokepacity, fillColor: fillColour, fillOpacity:fillOpacity}