diff --git a/src/views/homestead/index.vue b/src/views/homestead/index.vue index 22982068..060ac5f3 100644 --- a/src/views/homestead/index.vue +++ b/src/views/homestead/index.vue @@ -243,7 +243,7 @@ - +
@@ -1470,11 +1470,11 @@ export default { housingSerial(item, index) { this.selectChooseOrder = index; if (item.type == "house") { - // $("#texiao_fang").val(item.name); - // $("#texiao_fang").trigger("click"); + $("#texiao_fang").val(item.name); + $("#texiao_fang").trigger("click"); } else { - // $("#texiao_di").val(item.name); - // $("#texiao_di").trigger("click"); + $("#texiao_di").val(item.name); + $("#texiao_di").trigger("click"); } }, @@ -1512,6 +1512,67 @@ export default { maxZoom: 18.9, //地图放大限制 }), }); + //业务图层 wfs服务 属性查询开始 ------------------start + /** + * @api wfs服务空间查询 + * @param {*} wfsurl + * @param {*} srsName + * @param {*} typeName + * @param {*} drawType + * @param {option 可选} geometryField + */ + + var wmsSource = new ol.source.TileWMS({ + //url: 'http://192.168.31.150:8888/geoserver/mywork_mysql/wms', + url: 'http://116.255.135.38:8080/geoserver/nsgk_hc/wms', + //url: 'http://localhost:8888/geoserver/mywork_mysql/wms', + params: { + 'LAYERS': 'nsgk_hc:nsgk_hc_all', + //'LAYERS': 'mywork_mysql:t_geo_hc_land', + 'TILED':true, + SRID:3857, + serverType: 'geoserver', + crossOrigin: 'anonymous', + }, + }) + + map.on('singleclick', function (evt) { + var aa = evt.coordinate; + map.getView().animate({ + // 只设置需要的属性即可 + center: [aa[0],aa[1]], // 中心点 + zoom: 15, // 缩放级别 + rotation: undefined, // 缩放完成view视图旋转弧度 + duration: 1000, // 缩放持续时间,默认不需要设置 + }); + document.getElementById('info').innerHTML = ''; + var viewResolution = map.getView().getResolution();///** @type {number} */ (view.getResolution()); + var url = wmsSource.getFeatureInfoUrl( + evt.coordinate, + viewResolution, + 'EPSG:3857', + {'INFO_FORMAT': 'text/html'} + ); + if (url) { + fetch(url) + .then(function (response) { return response.text(); }) + .then(function (html) { + document.getElementById('info').innerHTML = html; + }); + } + }); + + map.on('pointermove', function (evt) { + if (evt.dragging) { + return; + } + var pixel = map.getEventPixel(evt.originalEvent); + var hit = map.forEachLayerAtPixel(pixel, function () { + return true; + }); + map.getTargetElement().style.cursor = hit ? 'pointer' : ''; + }); + //属性查询结束 ------------------end var shitu = new ol.layer.Vector({ title: "add Layer", source: new ol.source.Vector({ @@ -2054,6 +2115,9 @@ export default { } else { cun = ""; } + //定位个人地图 + map.removeLayer(texiao_layer_fang); + map.removeLayer(texiao_layer_di); //删除之前加载的图层 if (cun != "全部") { let currObjNum = currObj[0]; @@ -2206,6 +2270,331 @@ export default { }); //开始绘制地图 ------------------- end + + //特效实现 + $("#texiao_fang").on("click", function () { + /** + * @api wfs服务空间查询 + * @param {*} wfsurl + * @param {*} srsName + * @param {*} typeName + * @param {*} drawType + * @param {option 可选} geometryField + */ + + //alert("进入分类"); + //删除之前加载的图层 + map.removeLayer(texiao_layer_fang); + var cunmap = _this.focusVillageOptions[0].orgCode; + var cun; + let currObj = _this.villageOptions.filter((v) => { + return v.orgCode == cunmap; + }); + if (currObj.length == 1) { + cun = currObj[0].deptName; + } else { + cun = ""; + } + //删除之前加载的图层 + //map.removeLayer(dishitu); + //map.removeLayer(cunshitu); + //分类查询查询农地、农房 + var difang; + //地的数据判断 + difang = "nsgk_hc:t_geo_hc_house"; + //查询条件 + var cql_filter; + //村的数据判断 + var val = $("#texiao_fang").val(); + if (val == "") { + alert("请填写查询条件在查询"); + } + //for(var i=0; i< difang.length; i++){ + //cql_filter = "CM='"+cun +"'"+ "and FWSYRMC='"+query_mz.value; + cql_filter = "FWSYRMC='" + val + "' and CM='" + cun + "'"; + //图层加载 + //地的数据判断 + + //定位查询位置 + let param_dw = { + srsName: "EPSG:3857", + service: "WFS", + version: "1.0.0", + request: "GetFeature", + typename: difang, + //featureNS: 'nsgk_hc',//命名空间 URI + cql_filter: cql_filter, + //featurePrefix: 'nationalwater',//工作区名称 + //featureTypes: ['nationalwater:01fir'],//查询图层,可以是同一个工作区下多个图层,逗号隔开 + outputFormat: "application/json", + //filter: ol.format.filter.equalTo(t,e,r)//前者是属性名,后者是对应值 + }; + let url_dw = "http://116.255.135.38:8080/geoserver/nsgk_hc/wfs"; //wfsurl; + url_dw = url_dw + "?"; + for (let key in param_dw) { + url_dw = url_dw + key + "=" + param_dw[key] + "&"; + } + url_dw = url_dw.substr(0, url_dw.length - 1); + fetch(url_dw, { + method: "POST", // *GET, POST, PUT, DELETE, etc. + }) + .then((res) => { + var geojsonmap = res.json(); + return geojsonmap; + }) + .then((data) => { + //关联查询农房信息---------------start + // document.getElementById("info").innerHTML = ""; + // var select_fang = (document.getElementById("info").innerHTML = + // data.features[0].properties); + // _this.hasTable = true; + // _this.hasDateStatus = 1; + // let obj = {}; + // //let trs = $("#info .featureInfo").find("tr:eq(1)"); + // obj.FWSYRMC = select_fang.FWSYRMC; //房屋所有人名称 + // obj.CM = select_fang.CM; //村名 + // obj.CDM = select_fang.CDM; //村代码 + // obj.DZ = select_fang.DZ; //地址 + // obj.SFYSPSX = select_fang.SFYSPSX; //是否有审批手续 + // obj.FWSYQH = select_fang.FWSYQH; //房屋所有权证号 + // obj.JZMJ = select_fang.JZMJ; //建筑面积 + // obj.TDZH = select_fang.TDZH; //土地证号 + // obj.TDXZ = select_fang.TDXZ; //土地性质 + // obj.TDMJ = select_fang.TDMJ; //土地面积 + // obj.XZQK = select_fang.XZQK; //现状情况 + // obj.ZLRXM = select_fang.ZLRXM; //租赁人姓名 + // obj.ZLHTJZRQ = select_fang.ZLHTJZRQ; //租赁合同截止时间 + // obj.ZLSYNX = select_fang.ZLSYNX; //租赁剩余年现 + // obj.XZFWSFYLZY = select_fang.XZFWSFYLZY; //是否流转意向 + // obj.XH = select_fang.XH; //农房编号 + // _this.hasData = obj; + //关联查询农房信息---------------end + //定位结束 --------------start + //var datamap = data.bbox; + var datamap = data.features[0].bbox; + map.getView().animate({ + // 只设置需要的属性即可 + center: datamap, // 中心点 + zoom: 18, // 缩放级别 + rotation: undefined, // 缩放完成view视图旋转弧度 + duration: 1000, // 缩放持续时间,默认不需要设置 + }); + //定位结束 --------------end + //特效动画实现 -----------------------------start + texiao_layer_fang = new ol.layer.Vector({ + source: new ol.source.Vector(), + }); + map.addLayer(texiao_layer_fang); + + var center = ol.extent.getCenter(datamap); //获取边界区域的中心位置 + var circle = new ol.Feature({ + geometry: new ol.geom.Point(center), //ol.proj.transform([104, 30], 'EPSG:4326', 'EPSG:3857') //投影坐标转为地理坐标 + }); + + //var out =new ol.coordinate.Coordinate(datamap); + //var extent = ol.extent.boundingExtent(feature.getGeometry().getCoordinates()[datamap]); //获取一个坐标数组的边界,格式为[minx,miny,maxx,maxy] + //var center = ol.extent.getCenter(extent); //获取边界区域的中心位置 + //map.getView().setCenter(center); //设置当前地图的显示中心位置 + circle.setStyle( + new ol.style.Style({ + image: new ol.style.Circle({ + radius: 0, + stroke: new ol.style.Stroke({ + color: "yellow", + size: 1, + }), + }), + }) + ); + texiao_layer_fang.getSource().addFeature(circle); + + // 关键的地方在此:监听postcompose事件,在里面重新设置circle的样式 + var radius = 0; + map.on("postcompose", function () { + // 增大半径,最大20 + radius++; + radius = radius % 10; + // 设置样式 + circle.setStyle( + new ol.style.Style({ + image: new ol.style.Circle({ + radius: radius, + stroke: new ol.style.Stroke({ + color: "yellow", + size: 1, + }), + }), + }) + ); + }); + //特效动画实现 -----------------------------end + }) + .catch((error) => { + console.log("【异常】", error); + }); + }); + //-----------------------------------------------------------------------------特效农房加载结束 end + + //-----------------------------------------------------------------------------特效农地加载开始 start + //特效实现 + $("#texiao_di").on("click", function () { + /** + * @api wfs服务空间查询 + * @param {*} wfsurl + * @param {*} srsName + * @param {*} typeName + * @param {*} drawType + * @param {option 可选} geometryField + */ + //alert("进入分类"); + //删除之前加载的图层 + map.removeLayer(texiao_layer_di); + var cunmap = _this.focusVillageOptions[0].orgCode; + var cun; + let currObj = _this.villageOptions.filter((v) => { + return v.orgCode == cunmap; + }); + if (currObj.length == 1) { + cun = currObj[0].deptName; + } else { + cun = ""; + } + //删除之前加载的图层 + //map.removeLayer(dishitu); + //map.removeLayer(cunshitu); + //分类查询查询农地、农房 + var difang; + //地的数据判断 + difang = "nsgk_hc:t_geo_hc_land"; + //查询条件 + var cql_filter; + //村的数据判断 + var val = $("#texiao_di").val(); + if (val == "") { + alert("请填写查询条件在查询"); + } + //for(var i=0; i< difang.length; i++){ + //cql_filter = "CM='"+cun +"'"+ "and FWSYRMC='"+query_mz.value; + cql_filter = "SYRMC='" + val + "' and CM='" + cun + "'"; + //图层加载 + + //定位查询位置 + let param_dw = { + srsName: "EPSG:3857", + service: "WFS", + version: "1.0.0", + request: "GetFeature", + typename: difang, + INFO_FORMAT: "text/html", + //featureNS: 'nsgk_hc',//命名空间 URI + cql_filter: cql_filter, + //featurePrefix: 'nationalwater',//工作区名称 + //featureTypes: ['nationalwater:01fir'],//查询图层,可以是同一个工作区下多个图层,逗号隔开 + outputFormat: "application/json", + //filter: ol.format.filter.equalTo(t,e,r)//前者是属性名,后者是对应值 + }; + let url_dw = "http://116.255.135.38:8080/geoserver/nsgk_hc/wfs"; //wfsurl; + url_dw = url_dw + "?"; + for (let key in param_dw) { + url_dw = url_dw + key + "=" + param_dw[key] + "&"; + } + url_dw = url_dw.substr(0, url_dw.length - 1); + fetch(url_dw, { + method: "POST", // *GET, POST, PUT, DELETE, etc. + }) + .then((res) => { + var geojsonmap = res.json(); + return geojsonmap; + }) + .then((data) => { + //关联查询农地信息 ----------start + // document.getElementById("info").innerHTML = ""; + // var select_di = (document.getElementById("info").innerHTML = + // data.features[0].properties); + // _this.hasTable = true; + // _this.hasDateStatus = 0; + // let obj = {}; + // //let trs = $("#info").find("tr:eq(1)"); + // obj.XH = select_di.XH; //序号 + // obj.CM = select_di.CM; //村名 + // obj.CBRMC = select_di.CBRMC; //承包人名称 + // obj.SYRMC = select_di.SYRMC; //使用人名称 + // obj.NYDLX = select_di.NYDLX; //农用地类型 + // obj.MJ = select_di.MJ; //面积 + // obj.XZQK = select_di.XZQK; //现状情况 + // obj.LZHTJZRQ = select_di.LZHTJZRQ; //流转合同截止时间 + // obj.LZSYNX = select_di.LZSYNX; //流转剩余年限 + // obj.SFYLZYX = select_di.SFYLZYX; //是否流转意向 + // obj.CDM = select_di.CDM; //村代码 + // obj.org_code = select_di.org_code; //行政区化代码 + // _this.hasData = obj; + //关联查询农地信息 ----------end + //获取坐标定位开始----------start + //var datamap = data.bbox; + var datamap = data.features[0].bbox; + map.getView().animate({ + // 只设置需要的属性即可 + center: datamap, // 中心点 + zoom: 16, // 缩放级别 + rotation: undefined, // 缩放完成view视图旋转弧度 + duration: 1000, // 缩放持续时间,默认不需要设置 + }); + //获取坐标定位开始----------end + //特效动画实现 -----------------------------start + texiao_layer_di = new ol.layer.Vector({ + source: new ol.source.Vector(), + }); + map.addLayer(texiao_layer_di); + + var center = ol.extent.getCenter(datamap); //获取边界区域的中心位置 + var circle = new ol.Feature({ + geometry: new ol.geom.Point(center), //ol.proj.transform([104, 30], 'EPSG:4326', 'EPSG:3857') //投影坐标转为地理坐标 + }); + + //var out =new ol.coordinate.Coordinate(datamap); + //var extent = ol.extent.boundingExtent(feature.getGeometry().getCoordinates()[datamap]); //获取一个坐标数组的边界,格式为[minx,miny,maxx,maxy] + //var center = ol.extent.getCenter(extent); //获取边界区域的中心位置 + //map.getView().setCenter(center); //设置当前地图的显示中心位置 + circle.setStyle( + new ol.style.Style({ + image: new ol.style.Circle({ + radius: 0, + stroke: new ol.style.Stroke({ + color: "#ef5b9c", + size: 1, + }), + }), + }) + ); + texiao_layer_di.getSource().addFeature(circle); + + // 关键的地方在此:监听postcompose事件,在里面重新设置circle的样式 + var radius = 0; + map.on("postcompose", function () { + // 增大半径,最大20 + radius++; + radius = radius % 10; + // 设置样式 + circle.setStyle( + new ol.style.Style({ + image: new ol.style.Circle({ + radius: radius, + stroke: new ol.style.Stroke({ + color: "#ef5b9c", + size: 1, + }), + }), + }) + ); + }); + //特效动画实现 -----------------------------end + }) + .catch((error) => { + console.log("【异常】", error); + }); + }); + + //-----------------------------------------------------------------------------特效农地加载结束 end }, //农房 - 农房权属 选择值