最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue+Openlayer批量設(shè)置閃爍點(diǎn)的實(shí)現(xiàn)代碼(基于postrender機(jī)制)

 更新時(shí)間:2021年09月01日 17:26:21   作者:~疆  
本篇文章給大家介紹基于postrender機(jī)制使用Vue+Openlayer批量設(shè)置閃爍點(diǎn)的實(shí)現(xiàn)代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

效果圖:

實(shí)現(xiàn)代碼:

<template>
  <div id="map" style="width: 100vw; height: 100vh" />
</template>
<script>
import "ol/ol.css";
import TileLayer from "ol/layer/Tile";
import VectorLayer from "ol/layer/Vector";
import VectorSource from "ol/source/Vector";
import XYZ from "ol/source/XYZ";
import { Map, View, Feature } from "ol";
import { Style, Circle, Stroke } from "ol/style";
import { Point } from "ol/geom";
import { getVectorContext } from "ol/render";
 
// 邊界json數(shù)據(jù)
export default {
  data() {
    return {
      map: {},
      coordinates: [
        { x: "106.918082", y: "31.441314" }, //重慶
        { x: "86.36158200334317", y: "41.42448570787448" }, //新疆
        { x: "89.71757707811526", y: "31.02619817424643" }, //西藏
        { x: "116.31694544853109", y: "39.868508850821115" }, //北京
        { x: "103.07940932026341", y: "30.438580338450862" }, //成都
      ],
      speed: 0.3,
    };
  },
  mounted() {
    this.initMap();
    this.addDynamicPoints(this.coordinates);
  },
  methods: {
    /**
     * 初始化地圖
     */
    initMap() {
      this.map = new Map({
        target: "map",
        layers: [
          new TileLayer({
            source: new XYZ({
              url: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}",
            }),
          }),
        ],
        view: new View({
          projection: "EPSG:4326",
          center: [108.522097, 37.272848],
          zoom: 4.7,
        }),
      });
    },
    /**
     * 批量添加閃爍點(diǎn)
     */
    addDynamicPoints(coordinates) {
      // 設(shè)置圖層
      let pointLayer = new VectorLayer({ source: new VectorSource() });
      // 添加圖層
      this.map.addLayer(pointLayer);
      // 循環(huán)添加feature
      let pointFeature = [];
      for (let i = 0; i < coordinates.length; i++) {
        // 創(chuàng)建feature,一個(gè)feature就是一個(gè)點(diǎn)坐標(biāo)信息
        const feature = new Feature({
          geometry: new Point([coordinates[i].x, coordinates[i].y]),
        });
        pointFeature.push(feature);
      }
      //把要素集合添加到圖層
      pointLayer.getSource().addFeatures(pointFeature);
      // 關(guān)鍵的地方在此:監(jiān)聽(tīng)postrender事件,在里面重新設(shè)置circle的樣式
      let radius = 0;
      pointLayer.on("postrender", (e) => {
        if (radius >= 20) radius = 0;
        let opacity = (20 - radius) * (1 / 20); //不透明度
        let pointStyle = new Style({
          image: new Circle({
            radius: radius,
            stroke: new Stroke({
              color: "rgba(255,0,0" + opacity + ")",
              width: 3 - radius / 10, //設(shè)置寬度
            }),
          }),
        });
        // 獲取矢量要素上下文
        let vectorContext = getVectorContext(e);
        vectorContext.setStyle(pointStyle);
        pointFeature.forEach((feature) => {
          vectorContext.drawGeometry(feature.getGeometry());
        });
        radius = radius + this.speed; //調(diào)整閃爍速度
        //請(qǐng)求地圖渲染(在下一個(gè)動(dòng)畫幀處)
        this.map.render();
      });
    },
  },
};
</script>

參考文章

到此這篇關(guān)于Vue+Openlayer批量設(shè)置閃爍點(diǎn)的實(shí)現(xiàn)代碼(基于postrender機(jī)制)的文章就介紹到這了,更多相關(guān)Vue Openlayer閃爍點(diǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue+ElementUI 關(guān)閉對(duì)話框清空驗(yàn)證,清除form表單的操作

    vue+ElementUI 關(guān)閉對(duì)話框清空驗(yàn)證,清除form表單的操作

    這篇文章主要介紹了vue+ElementUI 關(guān)閉對(duì)話框清空驗(yàn)證,清除form表單的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • Vue?Vuex搭建vuex環(huán)境及vuex求和案例分享

    Vue?Vuex搭建vuex環(huán)境及vuex求和案例分享

    這篇文章主要介紹了Vue?Vuex搭建vuex環(huán)境及vuex求和案例分享,?Vue?中實(shí)現(xiàn)集中式狀態(tài)管理的一個(gè)?Vue?插件,對(duì)?vue?應(yīng)用中多個(gè)組件的共享狀態(tài)進(jìn)行集中式的管理,下文相關(guān)介紹,需要的朋友可以參考一下
    2022-04-04
  • Vuex存值取值與異步請(qǐng)求處理方式

    Vuex存值取值與異步請(qǐng)求處理方式

    本文將詳細(xì)介紹Vuex的使用方法,包括參數(shù)值的獲取、修改,以及異步數(shù)據(jù)處理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • element-ui自定義表格如何給input雙向綁定數(shù)據(jù)

    element-ui自定義表格如何給input雙向綁定數(shù)據(jù)

    這篇文章主要介紹了element-ui自定義表格如何給input雙向綁定數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue如何實(shí)現(xiàn)組件間通信

    Vue如何實(shí)現(xiàn)組件間通信

    組件間通信簡(jiǎn)單來(lái)說(shuō)就是組件間進(jìn)行數(shù)據(jù)傳遞。就像我們?nèi)粘5拇螂娫?,就是通訊的一種方式,你把話說(shuō)給我聽(tīng),我把話說(shuō)給你聽(tīng),說(shuō)的話就是數(shù)據(jù)。電話就是通訊方式的一種。無(wú)論是 Vue 還是 React ,都得進(jìn)行組件間通信。
    2021-05-05
  • vue省市區(qū)三聯(lián)動(dòng)下拉選擇組件的實(shí)現(xiàn)

    vue省市區(qū)三聯(lián)動(dòng)下拉選擇組件的實(shí)現(xiàn)

    本篇文章主要介紹了vue省市區(qū)三聯(lián)動(dòng)下拉選擇組件的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-04-04
  • vue 封裝自定義組件之tabal列表編輯單元格組件實(shí)例代碼

    vue 封裝自定義組件之tabal列表編輯單元格組件實(shí)例代碼

    這篇文章主要介紹了vue 封裝自定義組件tabal列表編輯單元格組件實(shí)例代碼,需要的朋友可以參考下
    2017-09-09
  • el-select下拉選擇緩存的實(shí)現(xiàn)

    el-select下拉選擇緩存的實(shí)現(xiàn)

    本文主要介紹了在使用el-select實(shí)現(xiàn)下拉選擇緩存時(shí)遇到的問(wèn)題及解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • vue基本使用--refs獲取組件或元素的實(shí)例

    vue基本使用--refs獲取組件或元素的實(shí)例

    今天小編就為大家分享一篇vue基本使用--refs獲取組件或元素的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起個(gè)跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • vue3如何解決各場(chǎng)景l(fā)oading過(guò)度(避免白屏尷尬!)

    vue3如何解決各場(chǎng)景l(fā)oading過(guò)度(避免白屏尷尬!)

    在開(kāi)發(fā)的過(guò)程中點(diǎn)擊提交按鈕,或者是一些其它場(chǎng)景總會(huì)遇到loading加載,下面這篇文章主要給大家介紹了關(guān)于vue3如何解決各場(chǎng)景l(fā)oading過(guò)度的相關(guān)資料,避免白屏尷尬,需要的朋友可以參考下
    2023-03-03

最新評(píng)論

武义县| 武冈市| 敦化市| 泾川县| 梁河县| 天台县| 连平县| 浙江省| 河曲县| 炎陵县| 凌海市| 县级市| 富宁县| 错那县| 宁晋县| 顺平县| 东港市| 丰台区| 屏南县| 平远县| 武汉市| 清水县| 台湾省| 东乡族自治县| 名山县| 铅山县| 南陵县| 绍兴市| 大石桥市| 天祝| 万宁市| 淳安县| 桂平市| 东乡| 临颍县| 诏安县| 沭阳县| 广州市| 吴旗县| 明溪县| 望谟县|