OpenLayer学习之style样式的学习笔记
前言:
1. 可以配置的选项
/*** @typedef {{geometry: (undefined|string|ol.geom.Geometry|ol.style.GeometryFunction),* fill: (ol.style.Fill|undefined),* image: (ol.style.Image|undefined),* stroke: (ol.style.Stroke|undefined),* text: (ol.style.Text|undefined),* zIndex: (number|undefined)}}* @api*/
2.含义
geometry,要素的属性,或者要素,或者一个返回一个地理要素的函数,用来渲染成相应的地理要素;
fill,填充要素的样式;
iamge,图片样式,类型为
ol.style.Image
;stroke,要素边界样式,类型为
ol.style.Stroke
;text,要素文字的样式,类型为
ol.style.Text
;zIndex,CSS中的zIndex,即叠置的层次,为数字类型。
一、子类
- ol.style.Circle,针对矢量要素设置圆形的样式,继承
ol.style.Image
; - ol.style.Icon,针对矢量数据设置图标样式,继承
ol.style.Image
; - ol.style.Fill,针对矢量要素设置填充样式;
- ol.style.RegularShape,对矢量要素设置规则的图形样式,如果设置
radius
,结果图形是一个规则的多边形,如果设置radius1
和radius2
,结果图形将是一个星形; - ol.style.Stroke,矢量要素的边界样式;
- ol.style.Text,矢量要素的文字样式。
二、实例化
var style = new ol.style.Style({fill: new ol.style.Fill({ //矢量图层填充颜色,以及透明度color: 'rgba(255, 255, 255, 0.6)'}),stroke: new ol.style.Stroke({ //边界样式color: '#319FD3',width: 1}),text: new ol.style.Text({ //文本样式font: '12px Calibri,sans-serif',fill: new ol.style.Fill({color: '#000'}),stroke: new ol.style.Stroke({color: '#fff',width: 3})})
});
三、应用
var vectorLayer = new ol.layer.Vector({source: new ol.source.Vector({url: '../data/geojson/line-samples.geojson', format: new ol.format.GeoJSON()}),// 设置样式,颜色为红色,线条粗细为1个像素style: new ol.style.Style({stroke: new ol.style.Stroke({color: 'red',size: 1})})});
四、geometry - 地理属性
geometry
可以是要素的地理属性,或者 geometry
,或者一个返回 geometry
类型的函数。一般与 image
样式配合使用,表示 image 放置的位置,如下面的例子:
new ol.style.Style({image: new ol.style.Circle({radius: 5,fill: new ol.style.Fill({color: 'orange'})}),geometry: function(feature) {// return the coordinates of the first ring of the polygonvar coordinates = feature.getGeometry().getCoordinates()[0];return new ol.geom.MultiPoint(coordinates);}})
五、styleFunction应用
<div id="map2" style="width: 100%"></div>
<script type="text/javascript">// 创建layer使用的style function,根据feature的自定义type,返回不同的样式var layerStyleFunction = function(feature, resolution) {var type = feature.get('type');var style = null;// 点if (type === 'point') {style = new ol.style.Style({image: new ol.style.Circle({radius: 1,fill: new ol.style.Fill({color: 'red'})})});} else if ( type === 'circle') { // 圆形style = new ol.style.Style({image: new ol.style.Circle({radius: 10,stroke: new ol.style.Stroke({color: 'red',size: 1})})});} else { // 其他形状style = new ol.style.Style({image: new ol.style.RegularShape({points: 5,radius: 10,fill: new ol.style.Fill({color: 'blue'})})});}// 返回 style 数组return [style];};var layer2 = new ol.layer.Vector({source: new ol.source.Vector(),style: layerStyleFunction // 应用上面创建的 style function});var map2 = new ol.Map({layers: [new ol.layer.Tile({source: new ol.source.OSM()}), layer2],target: 'map2',view: new ol.View({projection: 'EPSG:4326',center: [104, 30],zoom: 10})});// 添加三个feature,并设置自定义属性 typevar rect = new ol.Feature({geometry: new ol.geom.Point([104, 30])});layer2.getSource().addFeature(rect);var circle = new ol.Feature({geometry: new ol.geom.Point([104, 30])});circle.set('type', 'circle');layer2.getSource().addFeature(circle);var point = new ol.Feature({geometry: new ol.geom.Point([104, 30])});point.set('type', 'point');layer2.getSource().addFeature(point);</script>
这就是一个典型的根据feature
的属性进行不同渲染的例子,可以在业务上无限扩展,比如feature
的属性可以是速度,可以是大小,可以是时间,可以是权重等等。 由此可见,只要掌握了这个方法,前端按照条件渲染就不再困难。
转载于:https://www.cnblogs.com/tuboshu/p/10752383.html
OpenLayer学习之style样式的学习笔记相关推荐
- Vue.js框架学习—绑定style样式
一.对象写法 模板和Vue实例 <body><div id="root"><div :style="styleObj">{{ ...
- android学习之-Style样式的定义
这个例子主要是写了配置文件,main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLa ...
- Web前端第二季(CSS):十:第5章:案例开发:505-SiKi学院首页布局分析+506-开发右侧学习中心链接样式+507-切分SiKi学院的布局+508-开发SiKi学院的导航按钮
目录 一.目的 1.想:学习前端知识 2.想:记录笔记,下次不用看视频,直接看笔记就可以快速回忆. 二.参考 1.我自己代码的GitHub网址 1.SIKI学院:我参考此视频实操 1.w3school ...
- 快速学习html、css的经典笔记
HTML语言剖析 Html简介-目录 全写: HyperText Mark-up Language 译名: 超文本标识语言 简释:一种为普通文件中某些字句加上标示的语言,其目的在于运用标签(tag ...
- Day7:Vue入门学习——传智播客学习笔记【微服务电商】
本节依旧是前端内容,但还是了解一下基础的入门知识 学习目标 会创建Vue实例,知道Vue的常见属性 会使用Vue的生命周期的钩子函数 会使用vue常见指令 会使用vue计算属性和watch监控 会编写 ...
- 学习 慕课网 PHP工程师学习计划--我的笔记汇总
为了进一步学习PHP,本周我选定了慕课网的PHP工程师学习计划, 从今天2015-07-06 10:24:47开始从头学习:计划本周尽快学习完成本课程,谨此作为笔记. 有个好的学习计划和思路非常非常重 ...
- 重磅!花书《深度学习》,这份精炼笔记可能是最全面的
点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 <深度学习>,又名"花书".该书由三位大佬 Ian Goodf ...
- 零基础学习Java开发,这些学习笔记送给你
因为Java具备很多特点,并且在企业中被广泛应用为此很多小伙伴选择学习Java基础开发,但是零基础学习Java技术开发需要我们制定Java学习路线图对于我们之后的学习会非常有帮助. 零基础学习Java ...
- 稍稍乱入的CNN,本文依然是学习周莫烦视频的笔记。
稍稍乱入的CNN,本文依然是学习周莫烦视频的笔记. 还有 google 在 udacity 上的 CNN 教程. CNN(Convolutional Neural Networks) 卷积神经网络简单 ...
最新文章
- Python3中内置函数callable介绍
- linux 文件缓冲区,如何查看 Linux 当前缓存了哪些大文件?
- MFC C++ 获取外网IP地址
- 项目管理指标_企业信息化——项目管理
- 顶会论文:基于神经网络StarNet的行人轨迹交互预测算法
- 如何判断自己是否到了该辞职的时候
- Linux常用最基础命令总结
- 【原理篇】推荐系统之矩阵分解模型
- 详述近期遭利用的 Atlassian Confluence OGNL 注入漏洞 (CVE-2021-26084)
- python所有软件-这些Python开源软件解决了程序员几乎所有的问题
- paip.提升性能---首页性能加快解决方案
- 35家中资上榜全球500大资产管理机构
- Android系统内存优化
- gcc ------ 编译与链接选项及CFLAGS、LDFLAGS、LIBS
- 计算机组装与维护双系统安装,给你的电脑安装一个不可见的WINPE救援系统(独立启动双系统)...
- IDEA设置todo快捷键
- 中国证券投资基金从业考试 笔记(时间相关)
- impala与hive的比较以及impala的有缺点
- Python for 循环遍历字符串
- 读书笔记——计网概述