f26b1774 by ifooling

WFS

1 parent b1200dcb
...@@ -6,3 +6,6 @@ pnpm i i2d --registry=http://core.pashanhoo.com:8932/repository/npm-public/ ...@@ -6,3 +6,6 @@ pnpm i i2d --registry=http://core.pashanhoo.com:8932/repository/npm-public/
6 pnpm install @turf/bbox 6 pnpm install @turf/bbox
7 ``` 7 ```
8 8
9
10 // "i2d": "link:D:/work/private/i2d",
11
......
...@@ -11,7 +11,8 @@ ...@@ -11,7 +11,8 @@
11 "@turf/bbox": "^7.0.0", 11 "@turf/bbox": "^7.0.0",
12 "axios": "^1.7.2", 12 "axios": "^1.7.2",
13 "core-js": "^3.8.3", 13 "core-js": "^3.8.3",
14 "i2d": "^0.1.0", 14 "i2d": "0.3.23",
15 "leaflet": "^1.9.4",
15 "vue": "^2.6.14", 16 "vue": "^2.6.14",
16 "vue-router": "3.5.1" 17 "vue-router": "3.5.1"
17 }, 18 },
......
...@@ -12,6 +12,9 @@ ...@@ -12,6 +12,9 @@
12 <td> 12 <td>
13 <router-link to="/xzq-map">行政区定位</router-link> 13 <router-link to="/xzq-map">行政区定位</router-link>
14 </td> 14 </td>
15 <td>
16 <router-link to="/wfs">wfs</router-link>
17 </td>
15 </tr> 18 </tr>
16 </tbody> 19 </tbody>
17 </table> 20 </table>
......
1 <template> 1 <template>
2 <div> 2 <div>
3 <button @click="removeGraphicLayer">移出graphic图层</button> 3 <button @click="removeGraphicLayer">移出graphic图层</button>
4 <button @click="getCoord">点击地图拾取坐标</button>
5 <button @click="draw">绘制</button>
4 <div id="map"> 6 <div id="map">
5 </div> 7 </div>
6 </div> 8 </div>
...@@ -13,7 +15,6 @@ import 'i2d/dist/i2d.css' ...@@ -13,7 +15,6 @@ import 'i2d/dist/i2d.css'
13 import L from "leaflet"; 15 import L from "leaflet";
14 import {bbox} from "@turf/bbox"; 16 import {bbox} from "@turf/bbox";
15 17
16
17 export default { 18 export default {
18 name: 'DkMap', 19 name: 'DkMap',
19 data() { 20 data() {
...@@ -55,6 +56,21 @@ export default { ...@@ -55,6 +56,21 @@ export default {
55 } 56 }
56 }, 57 },
57 methods: { 58 methods: {
59 draw() {
60 this.graphicLayer.startDraw({
61 type: "distanceMeasure",
62 style: {
63 width: 3,
64 color: "#000dfc"
65 }
66 })
67 },
68 getCoord() {
69 this.map.once(i2d.EventType.click, function (event) {
70 console.log(event);
71 alert(event.latlng)
72 })
73 },
58 getArrayRandomOne(arr) { 74 getArrayRandomOne(arr) {
59 const n = Math.floor(Math.random() * arr.length) 75 const n = Math.floor(Math.random() * arr.length)
60 return arr[n] 76 return arr[n]
...@@ -68,15 +84,18 @@ export default { ...@@ -68,15 +84,18 @@ export default {
68 } 84 }
69 }, 85 },
70 addMarker() { 86 addMarker() {
87 // eslint-disable-next-line no-debugger
88 console.log(123123123)
89 console.log(i2d)
71 let graphic = new i2d.Graphic.Marker({ 90 let graphic = new i2d.Graphic.Marker({
72 latlng: [32.3102954498753, 119.19403010080875], 91 latlng: [32.3102954498753, 119.19403010080875],
73 style: { 92 style: {
74 rotationAngle: 49, 93 // image: "./sdt.png",
75 image: "./sdt.png", 94 width: 16,
76 width: 32, 95 height: 16,
77 height: 44, 96 pulse: true,
78 horizontalOrigin: i2d.HorizontalOrigin.CENTER, 97 pulseColor: '#191a1b',
79 verticalOrigin: i2d.VerticalOrigin.BOTTOM 98 pulseShadowColor: '#191a1b'
80 } 99 }
81 }) 100 })
82 this.graphicLayer.addGraphic(graphic) 101 this.graphicLayer.addGraphic(graphic)
...@@ -156,6 +175,11 @@ export default { ...@@ -156,6 +175,11 @@ export default {
156 175
157 // 创建矢量数据图层 176 // 创建矢量数据图层
158 this.graphicLayer = new i2d.Layer.GraphicLayer() 177 this.graphicLayer = new i2d.Layer.GraphicLayer()
178 this.graphicLayer.on(i2d.EventType.click, (e) => {
179 console.log(e)
180 // eslint-disable-next-line no-debugger
181 debugger
182 })
159 this.map.addLayer(this.graphicLayer) 183 this.map.addLayer(this.graphicLayer)
160 this.addMarker() 184 this.addMarker()
161 } 185 }
......
1 <template>
2 <div>
3 <input v-model="zrzh">
4 <button @click="query">查询</button>
5 <div id="map">
6 </div>
7 </div>
8 </template>
9
10 <script>
11 import * as i2d from "i2d";
12 import 'leaflet/dist/leaflet.css'
13 import 'i2d/dist/i2d.css'
14 import axios from "axios";
15 import proj4 from 'proj4'
16
17 export default {
18 name: 'DkMap',
19 data() {
20 return {
21 mapOptions: {
22 copyright: false,
23 basemaps: [
24 {
25 type: 'group',
26 name: '天地图电子',
27 layers: [
28 {
29 type: 'tdt',
30 layer: 'vec_d',
31 key: i2d.Token.tiandituArr,
32 crs: i2d.CRS.EPSG4490,
33 },
34 {
35 type: 'tdt',
36 layer: 'vec_z',
37 key: i2d.Token.tiandituArr,
38 crs: i2d.CRS.EPSG4490,
39 }
40 ],
41 show: true
42 }
43 ],
44 operationallayers: [{
45 name: "宗地",
46 type: "wms",
47 url: "http://www.hzbdcdj.com/geoserver/hzData/wms",
48 layers: "hzData:ZRZ",
49 // 是否启用地图交互(点击查询弹框)
50 interactive: true,
51 popup: "all",
52 show: true,
53 transparent: true,
54 format: "image/png",
55 zIndex: 3
56 }],
57 zoom: 15,
58 minZoom: 1,
59 maxZoom: 18,
60 // 纬度在前
61 center: [33.073665, 107.026747],
62 crs: i2d.CRS.EPSG4490
63 },
64 map: null,
65 graphicLayer: null,
66 zrzh: '610702001204GB00001F0001'
67 }
68 },
69 methods: {
70 query() {
71 this.graphicLayer.clearLayers()
72 const _self = this
73 const data = `<wfs:GetFeature service="WFS" version="1.0.0"
74 outputFormat="application/json"
75 xmlns:wfs="http://www.opengis.net/wfs"
76 xmlns:ogc="http://www.opengis.net/ogc"
77 xmlns:gml="http://www.opengis.net/gml">
78 <wfs:Query typeName="hzData:ZRZ">
79 <ogc:Filter>
80 <ogc:PropertyIsEqualTo>
81 <ogc:PropertyName>自然幢号</ogc:PropertyName>
82 <ogc:Literal>${this.zrzh}</ogc:Literal>
83 </ogc:PropertyIsEqualTo>
84 </ogc:Filter>
85 </wfs:Query>
86 </wfs:GetFeature>`
87
88 const config = {
89 method: "post",
90 url: "https://www.hzbdcdj.com/geoserver/hzData/ows",
91 headers: {
92 "Content-Type": "application/xml"
93 },
94 data: data
95 }
96
97 axios(config)
98 .then(function (response) {
99 if (response.data.features.length > 0) {
100 _self.graphicLayer.loadGeoJSON(response.data, {
101 flyTo: true,
102 crs: "EPSG:4524"
103 })
104 } else {
105 alert("未查询到数据")
106 }
107 })
108 .catch(function (error) {
109 console.log(error)
110 alert("查询失败:" + error)
111 })
112 },
113 },
114 mounted() {
115
116 /**
117 * 定义4524坐标系
118 */
119 proj4.defs("EPSG:4524", "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=GRS80 +units=m +no_defs +type=crs")
120 console.log("proj4", proj4.defs["EPSG:4524"])
121
122 // 从数据库读取的地块信息
123 this.map = new i2d.Map('map', this.mapOptions)
124
125 // 创建矢量数据图层
126 this.graphicLayer = new i2d.Layer.GraphicLayer()
127
128 this.map.addLayer(this.graphicLayer)
129 }
130 }
131 </script>
132
133 <style scoped>
134 #map {
135 position: absolute;
136 margin: 0;
137 height: 60%;
138 width: 60%;
139 }
140 </style>
...@@ -2,7 +2,8 @@ import Vue from 'vue' //引入Vue ...@@ -2,7 +2,8 @@ import Vue from 'vue' //引入Vue
2 import Router from 'vue-router' //引入vue-router 2 import Router from 'vue-router' //引入vue-router
3 import HomeMap from '@/components/HomeMap' 3 import HomeMap from '@/components/HomeMap'
4 import DkMap from '@/components/DkMap' 4 import DkMap from '@/components/DkMap'
5 import XzqMap from '@/components/XzqMap.vue' //引入根目录下的Hello.vue组件 5 import XzqMap from '@/components/XzqMap.vue'
6 import WFSQuery from '@/components/WFSQuery.vue'
6 7
7 Vue.use(Router) //Vue全局使用Router 8 Vue.use(Router) //Vue全局使用Router
8 9
...@@ -22,6 +23,11 @@ export default new Router({ ...@@ -22,6 +23,11 @@ export default new Router({
22 path: '/xzq-map', 23 path: '/xzq-map',
23 name: 'DkMap', 24 name: 'DkMap',
24 component: XzqMap 25 component: XzqMap
26 },
27 {
28 path: '/wfs',
29 name: 'WFS',
30 component: WFSQuery
25 } 31 }
26 ] 32 ]
27 }) 33 })
......