map.html 8.09 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="alert(overlays.length)"/>
  <input type="button" value="清除" onclick="clearAll()"/>
  <input type="button" value="获取电子围栏信息" onclick="getLayerInformation()">
  <label>设置电子围栏的名称:</label> <input type="text" id="t_name" value="">
  <input type="button" value="确认" onclick="confirm_name()">
  <input type="button" value="查看当前围栏详细信息" onclick="showTiger()"/>
  <input type="button" value="保存此次绘制的围栏" onclick="savethisTiger()"/>
<!--  <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">
  // 百度地图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 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), //偏离值
    },
    circleOptions: styleOptions, //圆的样式
    polylineOptions: styleOptions, //线的样式
    polygonOptions: styleOptions, //多边形的样式
    rectangleOptions: styleOptions //矩形的样式
  });
  //添加鼠标绘制工具监听事件,用于获取绘制结果
  drawingManager.addEventListener('overlaycomplete', overlaycomplete);
  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("确认:"+tigername);
  }

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

  // 保存到数据库中
  function savethisTiger() {
    var ctx = "http://127.0.0.1:8080";
    debugger
    $.ajax({
      timeout: 10000, //超时时间设置为10秒
      contentType:"application/json",//传给服务器的数据类型
      dataType:"json", //接收服务器传来的数据格式
      type: "post",
      async:false, // async异步 false改为同步
      url: ctx + "/jeecg-boot/fence/electricFence/add",
      data: JSON.stringify({
        "coordinate":mlngat.toString(),
        "name":tigername.toString()
      }),
      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>