openlayers官方教程(十)Vector Data——Making it look nice

2024-06-08 04:48

本文主要是介绍openlayers官方教程(十)Vector Data——Making it look nice,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Making it look nice

前面已经完成了基础的功能,包括导入、编辑、导出。但是没有做一下美化,当你创建了一个矢量图层,会默认很多样式。编辑过程中的交互也是默认的样式,你可能注意到在编辑过程中线条很粗,这个可以通过向矢量图层和交互提供style来控制这些属性。

Static style

如果我们给所有要素集定义通用的样式,可以如下配置:

const layer = new VectorLayer({source: source,style: new Style({fill: new Fill({color: 'red'}),stroke: new Stroke({color: 'white'})})
});

也可以给一组styles设置style属性,但是这种方式并不是很好,采用下面的动态配置样式更好

Dynamic style

当你想通过要素的一些属性来分别渲染要素时,你可以用一个style函数来配置矢量图层。这个函数可以根据不同的feature来渲染不同的样式。所以,如果你有很多features,并且想有很好的渲染效果,写好这个style函数很重要。

下面这个例子会根据图层“name”属性是以“A-M”或者“N-Z”开头来渲染两种不同的样式:

const layer = new VectorLayer({source: source,style: function(feature, resolution) {const name = feature.get('name').toUpperCase();return name < "N" ? style1 : style2; // assuming these are created elsewhere}
});

注意这个地方要自定义style1和style2,例子没有给出,否则会报错。

Styling based on geometry area

为了动态样式的原理,创建一个根据面积渲染要素的样式函数。在此之前,需要在npm上安装colormap包。我们可以通过下面代码得到依赖:

npm install colormap

现在,我们载入样式需要的包:

import {Fill, Stroke, Style} from 'ol/style';
import {getArea} from 'ol/sphere';
import colormap from 'colormap';

接下来,写一组根据要素面积渲染图层的样式函数:

const min = 1e8; // the smallest area
const max = 2e13; // the biggest area
const steps = 50;
const ramp = colormap({colormap: 'blackbody',nshades: steps
});function clamp(value, low, high) {return Math.max(low, Math.min(value, high));
}function getColor(feature) {const area = getArea(feature.getGeometry());const f = Math.pow(clamp((area - min) / (max - min), 0, 1), 1 / 2);const index = Math.round(f * (steps - 1));return ramp[index];
}

下面就可以创建一个矢量图层,并且把上面的样式函数设置到其中:

const layer = new VectorLayer({source: source,style: function(feature) {return new Style({fill: new Fill({color: getColor(feature)}),stroke: new Stroke({color: 'rgba(255,255,255,0.8)'})});}
});

效果图如下:




这篇关于openlayers官方教程(十)Vector Data——Making it look nice的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1041245

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.

【Shiro】Shiro 的学习教程(三)之 SpringBoot 集成 Shiro

目录 1、环境准备2、引入 Shiro3、实现认证、退出3.1、使用死数据实现3.2、引入数据库,添加注册功能后端代码前端代码 3.3、MD5、Salt 的认证流程 4.、实现授权4.1、基于角色授权4.2、基于资源授权 5、引入缓存5.1、EhCache 实现缓存5.2、集成 Redis 实现 Shiro 缓存 1、环境准备 新建一个 SpringBoot 工程,引入依赖:

Unity3D自带Mouse Look鼠标视角代码解析。

Unity3D自带Mouse Look鼠标视角代码解析。 代码块 代码块语法遵循标准markdown代码,例如: using UnityEngine;using System.Collections;/// MouseLook rotates the transform based on the mouse delta./// Minimum and Maximum values can

CentOS下mysql数据库data目录迁移

https://my.oschina.net/u/873762/blog/180388        公司新上线一个资讯网站,独立主机,raid5,lamp架构。由于资讯网是面向小行业,初步估计一两年内访问量压力不大,故,在做服务器系统搭建的时候,只是简单分出一个独立的data区作为数据库和网站程序的专区,其他按照linux的默认分区。apache,mysql,php均使用yum安装(也尝试