当前位置: 首页 > news >正文

mapbox V3 新特性,添加下雪效果

👨‍⚕️ 主页: gis分享者
👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅!
👨‍⚕️ 收录于专栏:mapbox 从入门到精通

文章目录

  • 一、🍀前言
    • 1.1 ☘️mapboxgl.Map 地图对象
    • 1.2 ☘️mapboxgl.Map style属性
    • 1.3 ☘️snow 属性说明
  • 二、🍀添加绘图扩展插件,绘制任意方向矩形
    • 1. ☘️实现思路
    • 2. ☘️代码样例


一、🍀前言

本文详细介绍如何基于mapbox-gl v3.*.*、vue 3.*.* 版本中添加下雪效果,亲测可用。希望能帮助到您。一起学习,加油!加油!
注意:mapbox-gl V3版本 需要vue3 安装引入才可以使用,vue2 暂时没测试使用成功!

1.1 ☘️mapboxgl.Map 地图对象

mapboxgl.Map mapbox地图对象。
构造函数:
new Map class(options: Object)
本例使用属性:
在这里插入图片描述

1.2 ☘️mapboxgl.Map style属性

本例使用属性:

  • version:版本号,当前固定值为8。
  • sources:数据源集合(必填,用于包含一系列数据源
    source,这些数据源提供了在地图上显示的数据)。值为{}对象。{}中的属性名是数据源的名称。
    每个数据源 source 有的属性:
    type:数据源类型
    tiles:数据源地址
    tileSize:数据源切片大小
  • layers:图层集合(必填,包含了一系列图层 layer,这些图层指定了如何渲染数据源提供的数据)
    每个layer的属性(当前示例用到的):
    id:图层id
    type:图层类型
    source:数据源名称

1.3 ☘️snow 属性说明

"snow": {
  "density": 0.85, // 雪花密度,取值0-1 默认 ["interpolate",["linear"],["zoom"],11,0,13,0.85]
  "intensity": 1.0, // 雪花下落速度,取值0-1 默认1
  "center-thinning": 0.1, // 雪花从中心变薄系数,取值0-1 默认0.4
  "direction": [0, 50], // 雪花方向[方位角 极角] 默认[0,50]
  "opacity": 1.0, // 雪花透明度取值0-1 默认 1
  "color": "#ffffff", // 雪花颜色 默认'#ffffff'
  "flake-size": 0.71, // 雪花大,取值0-5 默认0.71
  "vignette": 0.3, // 雪花空间角落大小,取值0-1 默认["interpolate",["linear"],["zoom"],11,0,13,0.3]
  "vignette-color": "#ffffff" // 雪花空间角落颜色 默认'#ffffff'
}

相关地址
下雪效果_API

二、🍀添加绘图扩展插件,绘制任意方向矩形

1. ☘️实现思路

  • 1、引入’mapbox-gl’、'mapbox-gl/dist/mapbox-gl.css’文件
  • 2、添加id为map的html页面要素,定义map样式。
  • 3、定义initMap初始化地图方法,方法内创建mapboxgl.Map地图对象map。map绑定‘style.load’事件,在事件内部map调用setSnow方法,设置下雪相关参数。在mounted钩子函数中调用initMap方法。

2. ☘️代码样例

<template>
    <div id='map'></div>
</template>

<script>
<template>
    <div id='map'></div>
</template>

<script>
/** 下雪效果**/
import mapboxgl from 'mapbox-gl'
import 'mapbox-gl/dist/mapbox-gl.css'
export default {
  name: 'MapboxDrawSnow',
  data () {
    return {
      map: null
    }
  },
  mounted () {
    this.$nextTick(() => {
      this.initMap()
    })
  },
  methods: {
    initMap () {
      mapboxgl.accessToken = 'mapbox官网注册token'
      this.map = new mapboxgl.Map({
        container: 'map',
        zoom: 17,
        pitch: 74,
        minZoom: 0,
        center: [116.4, 39.9],
        style: 'mapbox://styles/mapbox/standard',
        projection: 'globe'
      })
     this.map.on('style.load', () => {
       this.map.setConfigProperty('basemap', 'lightPreset', 'dusk')

       const zoomBasedReveal = (value) => {
         return [
           'interpolate',
           ['linear'],
           ['zoom'],
           11,
           0.0,
           13,
           value
         ]
       }

       this.map.setSnow({
         density: zoomBasedReveal(0.85),
         intensity: 1,
         'center-thinning': 0.1,
         direction: [0, 50],
         opacity: 1.0,
         color: `#ffffff`,
         'flake-size': 0.71,
         vignette: zoomBasedReveal(0.3),
         'vignette-color': `#ffffff`
       })
     })
    }
  }
}
</script>

<style scoped>
#map{
    height: 100vh;
    width: 100vw;
}
</style>

效果如下:
在这里插入图片描述

相关文章:

  • 科技查新测试有多重要?如何选择合适的第三方测试机构服务?
  • 深入浅出Java反射:掌握动态编程的艺术
  • 《图解设计模式》笔记(八)管理状态
  • 初窥强大,AI识别技术实现图像转文字(OCR技术)
  • 消防设施操作员考试题库及答案
  • 2024年12月电子学会青少年机器人技术等级考试(五级)理论综合真题
  • 广告深度学习计算:阿里妈妈大模型服务框架HighService
  • 快速部署 DeepSeek R1 模型
  • 深度学习之卷积神经网络框架模型搭建
  • DeepAR:一种用于时间序列预测的深度学习模型
  • STM32简介
  • 基于斜坡单元的机器学习模型预测滑坡易发性,考虑条件因素的异质性
  • 【python语言应用】最新全流程Python编程、机器学习与深度学习实践技术应用(帮助你快速了解和入门 Python)
  • 《open3d+pyqt》第一章——网格读取显示
  • 数值积分:通过复合梯形法计算
  • 浏览器打开Axure RP模型
  • 释放你的元数据:使用 Elasticsearch 的自查询检索器
  • 请求响应-请求-日期参数json参数路径参数
  • 使用PHP爬虫获取1688商品分类:实战案例指南
  • 2.14寒假作业
  • 外贸自建站平台怎么选/seo优化排名教程
  • 一个网站空间可以做多少个网站/做企业推广的公司
  • 亚马逊卖家做自己网站/sem是什么的英文缩写
  • 美女教师做爰网站/百度一下你就知道下载
  • 怎么做网站赚/上海关键词推广
  • 汽车配件网站模板/排名优化百度