openlayers+vueCli

本文详细介绍如何使用Vue CLI搭建项目,并集成OpenLayers实现地图显示功能。通过安装依赖、创建组件及配置OpenLayers,最终成功展示指定经纬度的地图。

openlayers+vue-cli入门

vue-cli安装好后下载openlayers:

npm install ol

然后自己创建一个vue文件,创建一个div,设置好宽和高

<div id="map"></div>

再引入一下模块:

import 'ol/ol.css';
import Map from 'ol/Map';
import OSM from 'ol/source/OSM';
import TileLayer from 'ol/layer/Tile';
import View from 'ol/View';
import {fromLonLat} from 'ol/proj';

在script里写入openlayers代码:

 var map = new Map({
        layers: [
          new TileLayer({
            source: new OSM(),
          }),
        ],
        target: "map",
        view: new View({
          center: new fromLonLat([117.41, 28.82]),
          zoom: 8,
        }),
      });

效果如下:
在这里插入图片描述
注意:地图初始化的时候,有时候经纬度写进去后,图层还是会在[0,0]位置保持不变,这时候就要引入

import { fromLonLat } from "ol/proj";

具体代码如下:

<template>
  <div class="att">
    <div id="map" class="stdent"></div>
  </div>
</template>
<script>
import "ol/ol.css";
import Map from "ol/Map";
import OSM from "ol/source/OSM";
import TileLayer from "ol/layer/Tile";
import View from "ol/View";
import { fromLonLat } from "ol/proj";
export default {
  data() {
    return {
      map: "",
      view: "",
    };
  },
  mounted() {
    this.openlayerTxt();
  },
  methods: {
    openlayerTxt() {
      var map = new Map({
        layers: [
          new TileLayer({
            source: new OSM(),
          }),
        ],
        target: "map",
        view: new View({
          center: new fromLonLat([117.41, 28.82]),
          zoom: 8,
        }),
      });
    },
  },
};
</script>
OpenLayers + Vue 3项目中绘制动态水深淹没动画,可按以下步骤实现: ### 项目初始化 首先,创建一个Vue 3项目,并安装OpenLayers。使用Vue CLI创建项目,在项目目录下执行以下命令安装OpenLayers: ```bash npm install ol ``` ### 创建Vue组件 在`src/components`目录下创建一个组件,例如`FloodAnimation.vue`。 ### 实现动态水深淹没动画 ```vue <template> <div id="map" style="width: 100%; height: 600px;"></div> </template> <script setup> import { onMounted, ref } from 'vue'; import 'ol/ol.css'; import Map from 'ol/Map'; import View from 'ol/View'; import TileLayer from 'ol/layer/Tile'; import OSM from 'ol/source/OSM'; import VectorLayer from 'ol/layer/Vector'; import VectorSource from 'ol/source/Vector'; import Feature from 'ol/Feature'; import { Polygon } from 'ol/geom'; import { Fill, Style } from 'ol/style'; const mapRef = ref(null); onMounted(() => { // 创建地图 const map = new Map({ target: 'map', layers: [ new TileLayer({ source: new OSM() }) ], view: new View({ center: [0, 0], zoom: 2 }) }); // 创建矢量图层用于显示淹没区域 const floodSource = new VectorSource(); const floodLayer = new VectorLayer({ source: floodSource, style: new Style({ fill: new Fill({ color: 'rgba(0, 0, 255, 0.5)' }) }) }); map.addLayer(floodLayer); // 模拟淹没区域数据 const initialPolygon = new Polygon([[ [-1000000, -1000000], [-1000000, 1000000], [1000000, 1000000], [1000000, -1000000], [-1000000, -1000000] ]]); const floodFeature = new Feature({ geometry: initialPolygon }); floodSource.addFeature(floodFeature); // 动态更新淹没区域 let scaleFactor = 1; const animationInterval = setInterval(() => { scaleFactor += 0.01; const scaledCoordinates = initialPolygon.getCoordinates()[0].map(([x, y]) => [x * scaleFactor, y * scaleFactor]); const newPolygon = new Polygon([scaledCoordinates]); floodFeature.setGeometry(newPolygon); }, 100); // 清理动画 // 在组件销毁时清除定时器 // 这里可以使用 onUnmounted 钩子 // onUnmounted(() => { // clearInterval(animationInterval); // }); }); </script> ``` ### 使用组件 在`App.vue`中使用`FloodAnimation`组件: ```vue <template> <div id="app"> <FloodAnimation /> </div> </template> <script setup> import FloodAnimation from './components/FloodAnimation.vue'; </script> <style> #app { font-family: Avenir, Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; } </style> ``` ### 代码解释 1. **项目初始化**:创建Vue 3项目并安装OpenLayers,为后续开发提供基础环境。 2. **创建地图**:使用OpenLayers的`Map`、`View`和`TileLayer`创建一个基础地图,以OSM作为底图。 3. **创建矢量图层**:用于显示淹没区域,通过`VectorLayer`和`VectorSource`实现。 4. **模拟淹没区域数据**:创建一个多边形`Feature`作为初始淹没区域。 5. **动态更新淹没区域**:使用`setInterval`定时更新多边形的坐标,实现动态淹没效果。 6. **清理动画**:在组件销毁时清除定时器,避免内存泄漏。 ### 注意事项 - 上述代码中的淹没区域数据是模拟的,实际应用中需要根据具体的水深数据生成多边形。 - 动画的更新频率和缩放因子可以根据实际需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值