需求:在地图上画出围栏,设置围栏信息后保存,生成围栏列表。全选时,地图视野可看到全部的围栏区域,单独勾选会调整地图视野到当前勾选的围栏。围栏区域的中心点要显示围栏名称。
主要的难点(对于我而言)不在于画,而在于设置地图视野和围栏区域的中心点显示围栏名称,其实也不算难,主要是花比较多时间去看百度地图api,还有动手实践。(所以还是那句老话百度找不到答案就去看api文档,答案都在里面)。
以下主要说一下思路:
1.引入百度地图还有鼠标绘制管理类库DrawingManager
2.以下主要贴部分代码说明:
var electronitFence = {
//此处代码省略...
tableData: {},//保存每次list请求返回的数据
overlayObj: {},//保存图形对象(map)
labelObj: {},//保存label对象(map)
path: '',//当前新增围栏图形path
pointArray: [],//坐标点数组用于调整地图视野范围
styleOptions: {
//图形样式
enableClicking: false,
strokeColor: "blue", //边线颜色。
fillColor: "red", //填充颜色。当参数为空时,圆形将没有填充效果。
strokeWeight: 2, //边线的宽度,以像素为单位。
strokeOpacity: 0.6, //边线透明度,取值范围0 - 1。
fillOpacity: 0.5, //填充的透明度,取值范围0 - 1。
strokeStyle: 'solid' //边线的样式,solid或dashed。
},
init: function () {
//此处代码省略...
this.mapInit();
this.bindEvent();
//此处代码省略...
},
bindEvent:function(){
//新增围栏
$('#overlayType li').on('click', function () {
var index = $(this).index();
drawingManager.open();//开启地图的绘制模式
if (index ==