From 7976e60dfd49be4d2f68d2b371353df6637aee91 Mon Sep 17 00:00:00 2001 From: TreeWish <1131093754@qq.com> Date: 星期二, 07 二月 2023 14:48:58 +0800 Subject: [PATCH] 二维地图比例尺&指北针 --- src/components/mapol.vue | 68 +++++++++++++++++++++------------- 1 files changed, 42 insertions(+), 26 deletions(-) diff --git a/src/components/mapol.vue b/src/components/mapol.vue index 3ad3f60..fe89722 100644 --- a/src/components/mapol.vue +++ b/src/components/mapol.vue @@ -14,62 +14,78 @@ </template> <script> -import TileLayer from 'ol/layer/Tile'; -import XYZ from 'ol/source/XYZ'; -import Map from 'ol/Map'; -import View from 'ol/View'; -import { transform } from 'ol/proj'; +import TileLayer from "ol/layer/Tile" +import XYZ from "ol/source/XYZ" +import Map from "ol/Map" +import View from "ol/View" +import { transform } from "ol/proj" +import { + OverviewMap, + defaults as defaultControls, + FullScreen, + ScaleLine, + Rotate, +} from "ol/control.js" +import { + DragRotateAndZoom, + defaults as defaultInteractions, +} from 'ol/interaction.js'; export default { - name: '', + name: "", data() { return { centerFlag: false, isActive: true, isMenuLayer: false, - }; + } }, mounted() { - this.init2DMap(); + this.init2DMap() }, methods: { init2DMap() { var vectorLayer = new TileLayer({ source: new XYZ({ - url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}', + url: "http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}", }), - }); + }) var imageLayer = new TileLayer({ source: new XYZ({ - url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=6&x={x}&y={y}&z={z}', + url: "http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=6&x={x}&y={y}&z={z}", }), - }); + }) window.map = new Map({ - target: 'mapol', + target: "mapol", layers: [imageLayer, vectorLayer], view: new View({ - center: transform([105.02, 34.9], 'EPSG:4326', 'EPSG:3857'), + center: transform([105.02, 34.9], "EPSG:4326", "EPSG:3857"), zoom: 4, - projection: 'EPSG:3857', + projection: "EPSG:3857", }), - }); + controls: defaultControls().extend([ + new FullScreen(), + new ScaleLine(), + ]), + interactions: defaultInteractions().extend([new DragRotateAndZoom()]), + }) }, changeMenulayer() { - this.isActive = !this.isActive; - this.isMenuLayer = !this.isMenuLayer; - this.setLayerVisible(); + this.isActive = !this.isActive + this.isMenuLayer = !this.isMenuLayer + this.setLayerVisible() }, setLayerVisible() { if (this.isActive == true) { - map.getLayers().item(0).setVisible(false); - map.getLayers().item(1).setVisible(true); + map.getLayers().item(0).setVisible(false) + map.getLayers().item(1).setVisible(true) } else { - map.getLayers().item(0).setVisible(true); - map.getLayers().item(1).setVisible(false); + map.getLayers().item(0).setVisible(true) + map.getLayers().item(1).setVisible(false) } }, }, -}; +} </script> <style scoped> @@ -118,7 +134,7 @@ .active { width: 100%; height: 100%; - background: url('../assets/img/Layer/imgLayer2.png') no-repeat center; + background: url("../assets/img/Layer/imgLayer2.png") no-repeat center; position: absolute; background-size: 100% 100%; border-radius: 5px; @@ -126,7 +142,7 @@ .menuLayer { width: 100%; height: 100%; - background: url('../assets/img/Layer/imgLayer1.png') no-repeat center; + background: url("../assets/img/Layer/imgLayer1.png") no-repeat center; position: absolute; background-size: 100% 100%; border-radius: 5px; -- Gitblit v1.9.3