var map = new BMapGL.Map("container"); //默认经纬度 - 风正致远股份坐标 var lon = 113.548794,lat = 34.797358; var pl; //生成坐标点的数组 var point = []; $(function() { layui.use([ 'layer', 'laydate', 'form' ], function() { layer = layui.layer; }); setPoint(); }); //设置点 function setPoint() { if(listPatrol.length == 0){ layer.msg("暂未查到巡更记录信息!"); firstSetCenter(); return; } map.centerAndZoom(new BMapGL.Point(listPatrol[0].longitude,listPatrol[0].latitude), 17); map.enableScrollWheelZoom(true); // 开启鼠标滚轮缩放 var scaleCtrl = new BMapGL.ScaleControl(); // 添加比例尺控件 map.addControl(scaleCtrl); var zoomCtrl = new BMapGL.ZoomControl(); // 添加比例尺控件 map.addControl(zoomCtrl); for (var i = 0; i < listPatrol.length; i++) { point.push(new BMapGL.Point(listPatrol[i].longitude, listPatrol[i].latitude)); } pl = new BMapGL.Polyline(point, { strokeColor: "#e31411", strokeWeight: 4, strokeOpacity: 1 }); //画轨迹线 toLine(); } //画轨迹线 function toLine () { var second = (point.length-1)*2000; //设置时间 trackAni = new BMapGLLib.TrackAnimation(map, pl, { overallView: true, tilt: 30, duration: second, //设置轨迹线的时间段 delay: 300 }); trackAni.start(); //显示点图标及标注 showLabel(); } //默认定位 function firstSetCenter() { if(curDept && curDept.lon && curDept.lat){ lon = curDept.lon; lat = curDept.lat; } //适应地图大小,设置地图中心点坐标及地图级别 var defaultPoint = {longitude:lon,latitude:lat}; map.centerAndZoom(new BMapGL.Point(defaultPoint.longitude, defaultPoint.latitude), 12); map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放 var scaleCtrl = new BMapGL.ScaleControl(); // 添加比例尺控件 map.addControl(scaleCtrl); var zoomCtrl = new BMapGL.ZoomControl(); // 添加比例尺控件 map.addControl(zoomCtrl); } //显示坐标标注信息 function showLabel() { //设置标注偏移量 var offset = new BMapGL.Size(10, -30); //配置图标 var icon = new BMapGL.Icon("../../static/images/icon_gcoding.png", new BMapGL.Size(25, 45)); //显示点图标及标注时间 for (var i = 0; i < point.length; i++) { //添加点的并显示 var marker = new BMapGL.Marker(point[i], { icon: icon }); map.addOverlay(marker); //添加对应点id marker.patrol = {id: listPatrol[i].id, dayTime:dateFormatStr(listPatrol[i].createTime)}; marker.addEventListener("click", showImg); //添加文本标注,并显示 var opts = { position : point[i], offset : offset }; var label = new BMapGL.Label(dateFormatStr(listPatrol[i].createTime), opts); label.setStyle({ color : "black", "border" : "5px solid #e2e2e4", "border-radius" : "10px", "background" : "white", fontSize : "18px", lineHeight : "25px", fontFamily : "微软雅黑" }); map.addOverlay(label); } setZoom(listPatrol); } //展示图片 function showImg(e) { var id= e.target.patrol.id; var dayTime= e.target.patrol.dayTime; // console.log(id); layer.msg("开始打开图片……"); $.ajax({ type: "GET", cache: false, url: "../../basic/security/patrol-img?id=" +id, dataType: "json", contentType: "application/json;charset=UTF-8", success: function (result) { if(result){ $("#imgPath").attr("src", result.base64Img); layer.open({ type : 1, title : dayTime + "打卡记录照片", area : [ '500px', '700px' ], content : $('#imgRecord'), closeBtn: 2 }); }else { layer.msg("无照片记录"); } }, error: function (result) { layer.msg("无照片记录") } }); } //根据经纬极值计算绽放级别 function setZoom(points) { if (points.length > 0) { var maxLng = points[0].longitude; var minLng = points[0].longitude; var maxLat = points[0].latitude; var minLat = points[0].latitude; var res; for (var i = points.length - 1; i >= 0; i--) { res = points[i]; if (res.longitude > maxLng) maxLng = res.longitude; if (res.longitude < minLng) minLng = res.longitude; if (res.latitude > maxLat) maxLat = res.latitude; if (res.latitude < minLat) minLat = res.latitude; } var cenLng = (parseFloat(maxLng) + parseFloat(minLng)) / 2; var cenLat = (parseFloat(maxLat) + parseFloat(minLat)) / 2; var zoom = getZoom(maxLng, minLng, maxLat, minLat); map.centerAndZoom(new BMapGL.Point(cenLng, cenLat), zoom); } else { //没有坐标,显示全中国 map.centerAndZoom(new BMapGL.Point(103.388611, 35.563611), 5); } } //根据经纬极值计算绽放级别 function getZoom(maxLng, minLng, maxLat, minLat) { var zoom = ["50", "100", "200", "500", "1000", "2000", "5000", "10000", "20000", "25000", "50000", "100000", "200000", "500000", "1000000", "2000000"]; // 级别18到3。 var pointA = new BMapGL.Point(maxLng, maxLat); // 创建点坐标A var pointB = new BMapGL.Point(minLng, minLat); // 创建点坐标B var distance = map.getDistance(pointA, pointB).toFixed(1); //获取两点距离,保留小数点后两位 for (var i = 0, zoomLen = zoom.length; i < zoomLen; i++) { if (zoom[i] - distance > 0) { return 18 - i + 3; //之所以会多3,是因为地图范围常常是比例尺距离的10倍以上。所以级别会增加3。 } } } //格式化时间 function dateFormatStr(time) { if(time){ var d = new Date(time); return dateFtt("hh:mm:ss",d); } return ""; } //单机放大图片 function newWindow() { var img = new Image(); img.src = $("#imgPath")[0].src; var newWin = window.open("", '_blank'); newWin.document.write(img.outerHTML); newWin.document.title = "照片记录"; newWin.document.close(); }