时间:2022-11-01 09:19:18 | 栏目:vue | 点击:次
一个简单的小demo,就是在一个openlayers地图上面添加风场效果。
话不多说,直接进入正题。
首先我们需要安装一个插件。
npm install ol-windy --save
然后我们需要一个数据来绘制风场,我在文件最后上传一下文件。
接下来很简单,就是下面的代码。
<template> <div class="home"> <div id="map" ref="map"></div> </div> </template> <script> import 'ol/ol.css'; import Draw from 'ol/interaction/Draw'; import Map from 'ol/Map'; import Overlay from 'ol/Overlay'; import View from 'ol/View'; import { Circle as CircleStyle, Fill, Stroke, Style } from 'ol/style'; import { LineString, Polygon } from 'ol/geom'; import { OSM, Vector as VectorSource } from 'ol/source'; import { Tile as TileLayer, Vector as VectorLayer } from 'ol/layer'; import { getArea, getLength } from 'ol/sphere'; import { unByKey } from 'ol/Observable'; import { WindLayer } from 'ol-wind' import gfs from './gfs.json' var map = null export default { name: "Home", data() { return { } }, mounted() { this.initMap() }, methods: { // 初始化地图 initMap() { map = new Map({ layers: [ new TileLayer({ source: new OSM(), }), ], target: 'map', view: new View({ center: [120, 35], zoom: 5, maxZoom: 18, projection: 'EPSG:4326', }), }); this.addWindyLayer() }, // 添加风流粒子 addWindyLayer() { const windLayer = new WindLayer(gfs, { foceRender: false, windOptions: { globalAlpha: 0.9, // 粒子透明度 maxAge: 10, // 存活最大帧数 velocityScale: 1/100, // 粒子速度 frameRate: 20, // 每50贞绘制一次 paths: 5000, // 粒子数量 colorScale: () => { return "#00b3ef" }, width: 3, } }) map.addLayer(windLayer) }, }, }; </script> <style scoped> .home { width: 100%; height: 100%; background-color: aliceblue; position: relative; } #map { height: 100%; width: 100%; } </style>
其中 gfs 文件就是风场数据。
gfs文件下载【点这里】
然后看效果~