五十五、openlayers官网示例Loading Spinner解析——给地图添加loading效果,瓦片图层加载时等待效果

官网demo地址:

Loading Spinner 

这篇介绍了一个非常简单的loading效果

利用地图的loadstart和loadend事件,动态的添加和删除class名。

 map.on("loadstart", function () {
     map.getTargetElement().classList.add("spinner");
 });
 map.on("loadend", function () {
     map.getTargetElement().classList.remove("spinner");
 });

配合样式动画实现loading效果

@keyframes spinner {
  to {
    transform: rotate(360deg);
  }
}

.spinner:after {
  content: "";
  box-sizing: border-box;
  position: absolute;
  top: 50%;
  left: 50%;
  width: 40px;
  height: 40px;
  margin-top: -20px;
  margin-left: -20px;
  border-radius: 50%;
  border: 5px solid rgba(108, 153, 250, 0.8);
  border-top-color: rgba(255, 255, 255,1);
  animation: spinner 0.6s linear infinite;
}

完整代码:

<template>
  <div class="box">
    <h1>Loading Spinner</h1>
    <div id="map" class="map"></div>
  </div>
</template>

<script>
import StadiaMaps from "ol/source/StadiaMaps.js";
import Draw from "ol/interaction/Draw.js";
import Map from "ol/Map.js";
import Point from "ol/geom/Point.js";
import View from "ol/View.js";
import { Icon, Stroke, Style } from "ol/style.js";
import { OSM, Vector as VectorSource } from "ol/source.js";
import { Tile as TileLayer, Vector as VectorLayer } from "ol/layer.js";
import { get } from "ol/proj.js";
export default {
  name: "",
  components: {},
  data() {
    return {
      map: null,
    };
  },
  computed: {},
  created() {},
  mounted() {
    const layer = new TileLayer({
      source: new StadiaMaps({
        layer: "stamen_terrain_background",
      }),
    });

    const map = new Map({
      layers: [layer],
      target: "map",
      view: new View({
        center: [0, 0],
        zoom: 2,
      }),
    });

    map.on("loadstart", function () {
      map.getTargetElement().classList.add("spinner");
    });
    map.on("loadend", function () {
      map.getTargetElement().classList.remove("spinner");
    });
  },
  methods: {},
};
</script>

<style lang="scss" scoped>
#map {
  width: 100%;
  height: 500px;
  position: relative;
}
.box {
  height: 100%;
}

@keyframes spinner {
  to {
    transform: rotate(360deg);
  }
}

.spinner:after {
  content: "";
  box-sizing: border-box;
  position: absolute;
  top: 50%;
  left: 50%;
  width: 40px;
  height: 40px;
  margin-top: -20px;
  margin-left: -20px;
  border-radius: 50%;
  border: 5px solid rgba(108, 153, 250, 0.8);
  border-top-color: rgba(255, 255, 255,1);
  animation: spinner 0.6s linear infinite;
}
</style>

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenLayers中,可以通过一些优化技术来提高瓦片地图加载性能和效率。以下是一些常用的瓦片地图加载优化方法: 1. 使用合适的瓦片源:选择合适的瓦片源可以显著提高加载性能。一些常见的瓦片源包括OpenStreetMap、Google Maps、Bing Maps等。选择一个稳定、速度快的瓦片源可以减少加载间。 2. 使用缓存:使用缓存可以避免重复加载相同的瓦片。在OpenLayers中,可以使用`ol.source.TileImage`或`ol.source.XYZ`来配置瓦片源,并设置`tileLoadFunction`来处理瓦片加载过程。使用缓存机制可以避免重复请求服务器上已经下载过的瓦片。 3. 瓦片加载:在地图初始化,可以预加载一些瓦片,以提前下载并缓存一些地图数据。这样在用户操作,部分瓦片已经存在于缓存中,可以快速显示。 4. 瓦片分级加载:通过设置地图的最小和最大缩放级别,可以控制在不同缩放级别下加载瓦片的数量。在较低的缩放级别下,只加载必要的瓦片,而在较高的缩放级别下,逐步加载更多的瓦片。这样可以提高加载速度,并减少不必要的网络请求。 5. 使用瓦片裁剪:在OpenLayers中,可以使用`ol.layer.Tile`的`extent`属性来指定地图的显示范围。通过设置合适的范围,可以减少需要加载瓦片数量,从而提高加载性能。 6. 瓦片压缩和优化:对瓦片进行压缩和优化可以减小瓦片文件的大小,从而减少网络传输间。常用的瓦片压缩格式包括gzip和WebP。可以在服务器端对瓦片进行压缩,并在客户端进行解压缩和显示。 综合使用这些优化技术,可以提高OpenLayers瓦片地图加载性能和用户体验。根据具体需求和场景,可以选择适合的优化方法来进行实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值