map.html 8.55 KB
<!DOCTYPE html>

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
  <style type="text/css">
    body, html {
      width: 100%;
      height: 100%;
      margin: 0;
      font-family: "微软雅黑";
    }

    #allmap {
      width: 100%;
      height: 98%;
      overflow: hidden;
    }

    #result {
      width: 100%;
      font-size: 12px;
    }

    dl, dt, dd, ul, li {
      margin: 0;
      padding: 0;
      list-style: none;
    }

    p {
      font-size: 12px;
    }

    dt {
      font-size: 14px;
      font-family: "微软雅黑";
      font-weight: bold;
      border-bottom: 1px dotted #000;
      padding: 5px 0 5px 5px;
      margin: 5px 0;
    }

    dd {
      padding: 5px 0 0 5px;
    }

    li {
      line-height: 28px;
    }
  </style>


  <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=uOoek3DMnG1Zor4gW8plPaAH1tuDFdbq"></script>
  <!--	导入依赖的js-->
  <!--加载鼠标绘制工具-->
  <script type="text/javascript"
          src="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js"></script>
  <link rel="stylesheet" href="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css"/>
  <!--加载检索信息窗口-->
  <script type="text/javascript"
          src="http://api.map.baidu.com/library/SearchInfoWindow/1.4/src/SearchInfoWindow_min.js"></script>
  <link rel="stylesheet" href="http://api.map.baidu.com/library/SearchInfoWindow/1.4/src/SearchInfoWindow_min.css"/>
  <script src="https://code.jquery.com/jquery-3.0.0.min.js"></script>
  <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.3&key=d4332e5adb8b584442266763d20b978c"></script>
  <title>电子围栏绘制工具</title>
</head>
<body>
<div id="result" style="background-color: yellow">

  <!--	功能按钮-->
  <div id="l-map"></div>
  <!--  <div id="r-result"><input type="text" id="suggestId" size="20" value="百度" style="width:150px;" /></div>-->
  <label>请输入:</label><input type="text" id="suggestId" size="20" value="" style="width:150px;"/>
  <div id="searchResultPanel" style="border:1px solid #C0C0C0;width:150px;height:auto; display:none;"></div>
  <input type="button" value="清除" onclick="clearAll()"/>
  <!--  <input type="button" value="获取电子围栏信息" onclick="getLayerInformation()">-->
  <!--  <input type="button" value="查看当前围栏详细信息" onclick="showTiger()"/>-->
  <input type="button" value="保存围栏" onclick="savethisTiger()"/>
  <input type="hidden" value="" id="projectId"/>
  <!--  <input type="button" value="查看围栏列表" onclick="window.open('${pageContext.request.contextPath}/postgis/test/tiger/list')">-->

</div>

<div id="allmap" style="overflow:hidden;zoom:1;position:relative;">
  <div id="map" style="height:100%;-webkit-transition: all 0.5s ease-in-out;transition: all 0.5s ease-in-out;"></div>
</div>


<script type="text/javascript">
  $(function () {
    var projectId;
    window.addEventListener('message', function (messageEvent) {
      projectId = messageEvent.data;
      $("#projectId").val(projectId);
    }, false);
  });


  // 百度地图API功能
  function G(id) {
    return document.getElementById(id);
  }

  // 点的数组

  // 百度地图API功能
  var map = new BMap.Map('map');
  // var poi = new BMap.Point(116.307852,40.057031); 北京
  var poi = new BMap.Point(112.9454732, 28.2348894); //江苏大学
  map.centerAndZoom(poi, 16);
  map.enableScrollWheelZoom();
  var tigername = null;
  var overlays = [];
  var mlngat = [];
  var points;
  var radius;
  var overlaycomplete = function (e) {
    overlays.push(e.overlay);
    var path = e.overlay.getPath();
    // 新 直接传多边形
    // mlngat.push();
    mlngat.push("POLYGON((" + path[0].lng + " " + path[0].lat);
    for (var i = 1; i < path.length - 1; i++) {
      // 旧版
      // mlngat.push("lng:" + path[i].lng + ",lat:" + path[i].lat)
      // 新: 为了传到后端的时候方便传到数据库
      mlngat.push(path[i].lng + " " + path[i].lat);
    }
    mlngat.push(path[path.length - 1].lng + " " + path[path.length - 1].lat);
    mlngat.push(path[0].lng + " " + path[0].lat + "))");
  };

  var styleOptions = {
    strokeColor: "red",    //边线颜色。
    fillColor: "red",      //填充颜色。当参数为空时,圆形将没有填充效果。
    strokeWeight: 3,       //边线的宽度,以像素为单位。
    strokeOpacity: 0.8,       //边线透明度,取值范围0 - 1。
    fillOpacity: 0.6,      //填充的透明度,取值范围0 - 1。
    strokeStyle: 'solid' //边线的样式,solid或dashed。
  }
  //实例化鼠标绘制工具
  var drawingManager = new BMapLib.DrawingManager(map, {
    isOpen: false, //是否开启绘制模式
    enableDrawingTool: true, //是否显示工具栏
    drawingToolOptions: {
      anchor: BMAP_ANCHOR_TOP_RIGHT, //位置
      offset: new BMap.Size(5, 5), //偏离值
      drawingModes: [
        BMAP_DRAWING_CIRCLE,
      ]
    },
    circleOptions: styleOptions, //圆的样式
    polylineOptions: styleOptions, //线的样式
    polygonOptions: styleOptions, //多边形的样式
    rectangleOptions: styleOptions //矩形的样式
  });
  //添加鼠标绘制工具监听事件,用于获取绘制结果
  drawingManager.addEventListener('overlaycomplete', overlaycomplete);
  drawingManager.addEventListener("circlecomplete", function (e, overlay) {
    points = e.getCenter().lat + ',' + e.getCenter().lng
    radius = e.getRadius();
  });

  function clearAll() {
    // 旧版本
    // for(var i = 0; i < overlays.length; i++){
    // 	map.removeOverlay(overlays[i]);
    // }
    // overlays.length = 0
    // 直接页面刷新即可,防止页面元素缓存 影响后续的操作
    // 修改后的
    window.location.reload();
  }


  // 获取电子围栏信息弹窗
  function getLayerInformation() {
    alert("围栏坐标:" + mlngat);
  }


  // 设置电子围栏的名称
  function confirm_name() {
    tigername = $("#t_name").val();
    alert("确认:" + data);
  }

  // 查看当前围栏详细信息
  function showTiger() {
    alert("坐标:" + mlngat + "\n围栏名称:" + tigername);
  }

  // 保存到数据库中
  function savethisTiger() {
    var ctx = "http://mts.huahengweld.com/jeecg-boot";
    $.ajax({
      timeout: 10000, //超时时间设置为10秒
      contentType: "application/json",//传给服务器的数据类型
      dataType: "json", //接收服务器传来的数据格式
      type: "post",
      async: false, // async异步 false改为同步
      url: ctx + "/fence/electricFence/add",
      data: JSON.stringify({
        "coordinate": points.toString(),
        "remark": radius.toString(),
        "projectId": $("#projectId").val(),
      }),
      success: function (response) {
        alert("存储成功" + JSON.stringify(response));
      },
      error: function () {
        alert("存储失败");
      }
    });

  }


  var ac = new BMap.Autocomplete(    //建立一个自动完成的对象
    {
      "input": "suggestId"
      , "location": map
    });
  ac.addEventListener("onhighlight", function (e) {  //鼠标放在下拉列表上的事件
    var str = "";
    var _value = e.fromitem.value;
    var value = "";
    if (e.fromitem.index > -1) {
      value = _value.province + _value.city + _value.district + _value.street + _value.business;
    }
    str = "FromItem<br />index = " + e.fromitem.index + "<br />value = " + value;

    value = "";
    if (e.toitem.index > -1) {
      _value = e.toitem.value;
      value = _value.province + _value.city + _value.district + _value.street + _value.business;
    }
    str += "<br />ToItem<br />index = " + e.toitem.index + "<br />value = " + value;
    G("searchResultPanel").innerHTML = str;
  });
  var myValue;

  ac.addEventListener("onconfirm", function (e) {    //鼠标点击下拉列表后的事件
    var _value = e.item.value;
    myValue = _value.province + _value.city + _value.district + _value.street + _value.business;
    G("searchResultPanel").innerHTML = "onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue;

    setPlace();
  });

  function setPlace() {
    map.clearOverlays();    //清除地图上所有覆盖物
    function myFun() {
      var pp = local.getResults().getPoi(0).point;    //获取第一个智能搜索的结果
      map.centerAndZoom(pp, 18);
      map.addOverlay(new BMap.Marker(pp));    //添加标注
    }

    var local = new BMap.LocalSearch(map, { //智能搜索
      onSearchComplete: myFun
    });
    local.search(myValue);
  }
</script>
</body>
</html>