20191218
Showing
3 changed files
with
118 additions
and
3 deletions
src/components/ol/OL3.vue
0 → 100644
1 | <template> | ||
2 | <div> | ||
3 | <div id="map"></div> | ||
4 | </div> | ||
5 | </template> | ||
6 | |||
7 | <script> | ||
8 | import "ol/ol.css"; | ||
9 | import { Map, View } from "ol"; | ||
10 | import { XYZ } from "ol/source"; | ||
11 | import VectorSource from "ol/source/Vector"; | ||
12 | import Point from "ol/geom/Point"; | ||
13 | import WKT from "ol/format/WKT"; | ||
14 | import { Select, Draw, Modify, Snap } from "ol/interaction"; | ||
15 | import { Tile as TileLayer, Vector as VectorLayer } from "ol/layer"; | ||
16 | import { Circle as CircleStyle, Fill, Stroke, Style } from "ol/style"; | ||
17 | |||
18 | export default { | ||
19 | data() { | ||
20 | return { | ||
21 | map: null | ||
22 | }; | ||
23 | }, | ||
24 | mounted() { | ||
25 | var tdt_vec = new TileLayer({ | ||
26 | source: new XYZ({ | ||
27 | url: | ||
28 | "http://t3.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=394404c8b901574fdc4cdf8c18a98448" | ||
29 | }) | ||
30 | }); | ||
31 | var tdt_cva = new TileLayer({ | ||
32 | source: new XYZ({ | ||
33 | url: | ||
34 | "http://t3.tianditu.com/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=394404c8b901574fdc4cdf8c18a98448" | ||
35 | }) | ||
36 | }); | ||
37 | // 矢量绘制图层 | ||
38 | var source = new VectorSource(); | ||
39 | var vectorLayer = new VectorLayer({ | ||
40 | source: source, | ||
41 | style: new Style({ | ||
42 | fill: new Fill({ | ||
43 | color: "rgba(255, 0, 0, 0.2)" | ||
44 | }), | ||
45 | stroke: new Stroke({ | ||
46 | color: "#ffcc33", | ||
47 | width: 2 | ||
48 | }), | ||
49 | image: new CircleStyle({ | ||
50 | radius: 7, | ||
51 | fill: new Fill({ | ||
52 | color: "#ffcc33" | ||
53 | }) | ||
54 | }) | ||
55 | }) | ||
56 | }); | ||
57 | this.map = new Map({ | ||
58 | target: "map", | ||
59 | layers: [tdt_vec, tdt_cva, vectorLayer], | ||
60 | view: new View({ | ||
61 | projection: "EPSG:4326", | ||
62 | center: [120.79, 27.99], | ||
63 | zoom: 12, | ||
64 | minZoom: 10, | ||
65 | maxZoom: 18 | ||
66 | }) | ||
67 | }); | ||
68 | |||
69 | ////select | ||
70 | var select = new Select(); | ||
71 | this.map.addInteraction(select); | ||
72 | ////draw | ||
73 | var draw = new Draw({ | ||
74 | source: source, | ||
75 | stopClick: true, | ||
76 | freehand: false, | ||
77 | type: "LineString" | ||
78 | }); | ||
79 | this.map.addInteraction(draw); | ||
80 | draw.setActive(true); | ||
81 | draw.on("drawend", function(e) { | ||
82 | draw.setActive(false); | ||
83 | var feature = e.feature; | ||
84 | var wktformat = new WKT(); | ||
85 | console.log("Draw: " + wktformat.writeGeometry(feature.getGeometry())); | ||
86 | }); | ||
87 | ////modify | ||
88 | var modify = new Modify({ | ||
89 | features: select.getFeatures() | ||
90 | }); | ||
91 | this.map.addInteraction(modify); | ||
92 | modify.on("modifyend", function(e) { | ||
93 | var features = e.features.array_; | ||
94 | var wktformat = new WKT(); | ||
95 | console.log("Modify: " + wktformat.writeGeometry(features[0].getGeometry())); | ||
96 | }); | ||
97 | } | ||
98 | }; | ||
99 | </script> | ||
100 | |||
101 | <!-- Add "scoped" attribute to limit CSS to this component only --> | ||
102 | <style scoped> | ||
103 | #map { | ||
104 | position: absolute; | ||
105 | height: 100%; | ||
106 | width: 100%; | ||
107 | background-color: white; | ||
108 | } | ||
109 | </style> |
... | @@ -61,7 +61,8 @@ | ... | @@ -61,7 +61,8 @@ |
61 | <span slot="title"><a-icon type="up-square" /><span>OpenLayers</span></span> | 61 | <span slot="title"><a-icon type="up-square" /><span>OpenLayers</span></span> |
62 | <a-menu-item key="7_1"><router-link :to="'/map_ol'">OL点与改变视图</router-link></a-menu-item> | 62 | <a-menu-item key="7_1"><router-link :to="'/map_ol'">OL点与改变视图</router-link></a-menu-item> |
63 | <a-menu-item key="7_2"><router-link :to="'/map_ol2'">OL面绘制与修改</router-link></a-menu-item> | 63 | <a-menu-item key="7_2"><router-link :to="'/map_ol2'">OL面绘制与修改</router-link></a-menu-item> |
64 | <a-menu-item key="7_3"><router-link :to="'/map_ol_measure'">OL量测(未实现)</router-link></a-menu-item> | 64 | <a-menu-item key="7_3"><router-link :to="'/map_ol3'">OL线绘制与修改</router-link></a-menu-item> |
65 | <a-menu-item key="7_4"><router-link :to="'/map_ol_measure'">OL量测(未实现)</router-link></a-menu-item> | ||
65 | </a-sub-menu> | 66 | </a-sub-menu> |
66 | </a-menu> | 67 | </a-menu> |
67 | </template> | 68 | </template> | ... | ... |
1 | /* | 1 | /* |
2 | * @Author: jiangbotao | 2 | * @Author: jiangbotao |
3 | * @Date: 2019-12-12 17:40:15 | 3 | * @Date: 2019-12-12 17:40:15 |
4 | * @LastEditors: jiangbotao | 4 | * @LastEditors : jiangbotao |
5 | * @LastEditTime: 2019-12-18 00:31:32 | 5 | * @LastEditTime : 2019-12-18 20:05:46 |
6 | * @FilePath: \supermapvue\src\router\index.js | 6 | * @FilePath: \supermapvue\src\router\index.js |
7 | */ | 7 | */ |
8 | /* | 8 | /* |
... | @@ -170,6 +170,11 @@ export default new Router({ | ... | @@ -170,6 +170,11 @@ export default new Router({ |
170 | component: () => import('@/components/ol/OL2') | 170 | component: () => import('@/components/ol/OL2') |
171 | }, | 171 | }, |
172 | { | 172 | { |
173 | path: '/map_ol3', | ||
174 | name: 'Map_OL3', | ||
175 | component: () => import('@/components/ol/OL3') | ||
176 | }, | ||
177 | { | ||
173 | path: '/map_ol_measure', | 178 | path: '/map_ol_measure', |
174 | name: 'Map_OL_measure', | 179 | name: 'Map_OL_measure', |
175 | component: () => import('@/components/ol/OL_measure') | 180 | component: () => import('@/components/ol/OL_measure') | ... | ... |
-
Please register or sign in to post a comment