前言:

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,即叠置的层次,为数字类型。

一、子类

  1. ol.style.Circle,针对矢量要素设置圆形的样式,继承 ol.style.Image
  2. ol.style.Icon,针对矢量数据设置图标样式,继承 ol.style.Image
  3. ol.style.Fill,针对矢量要素设置填充样式;
  4. ol.style.RegularShape,对矢量要素设置规则的图形样式,如果设置 radius,结果图形是一个规则的多边形,如果设置 radius1radius2,结果图形将是一个星形;
  5. ol.style.Stroke,矢量要素的边界样式;
  6. 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样式的学习笔记相关推荐

  1. Vue.js框架学习—绑定style样式

    一.对象写法 模板和Vue实例 <body><div id="root"><div :style="styleObj">{{ ...

  2. android学习之-Style样式的定义

    这个例子主要是写了配置文件,main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLa ...

  3. Web前端第二季(CSS):十:第5章:案例开发:505-SiKi学院首页布局分析+506-开发右侧学习中心链接样式+507-切分SiKi学院的布局+508-开发SiKi学院的导航按钮

    目录 一.目的 1.想:学习前端知识 2.想:记录笔记,下次不用看视频,直接看笔记就可以快速回忆. 二.参考 1.我自己代码的GitHub网址 1.SIKI学院:我参考此视频实操 1.w3school ...

  4. 快速学习html、css的经典笔记

    HTML语言剖析 Html简介-目录 全写: HyperText Mark-up Language  译名: 超文本标识语言  简释:一种为普通文件中某些字句加上标示的语言,其目的在于运用标签(tag ...

  5. Day7:Vue入门学习——传智播客学习笔记【微服务电商】

    本节依旧是前端内容,但还是了解一下基础的入门知识 学习目标 会创建Vue实例,知道Vue的常见属性 会使用Vue的生命周期的钩子函数 会使用vue常见指令 会使用vue计算属性和watch监控 会编写 ...

  6. 学习 慕课网 PHP工程师学习计划--我的笔记汇总

    为了进一步学习PHP,本周我选定了慕课网的PHP工程师学习计划, 从今天2015-07-06 10:24:47开始从头学习:计划本周尽快学习完成本课程,谨此作为笔记. 有个好的学习计划和思路非常非常重 ...

  7. 重磅!花书《深度学习》,这份精炼笔记可能是最全面的

    点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 <深度学习>,又名"花书".该书由三位大佬 Ian Goodf ...

  8. 零基础学习Java开发,这些学习笔记送给你

    因为Java具备很多特点,并且在企业中被广泛应用为此很多小伙伴选择学习Java基础开发,但是零基础学习Java技术开发需要我们制定Java学习路线图对于我们之后的学习会非常有帮助. 零基础学习Java ...

  9. 稍稍乱入的CNN,本文依然是学习周莫烦视频的笔记。

    稍稍乱入的CNN,本文依然是学习周莫烦视频的笔记. 还有 google 在 udacity 上的 CNN 教程. CNN(Convolutional Neural Networks) 卷积神经网络简单 ...

最新文章

  1. Python3中内置函数callable介绍
  2. linux 文件缓冲区,如何查看 Linux 当前缓存了哪些大文件?
  3. MFC C++ 获取外网IP地址
  4. 项目管理指标_企业信息化——项目管理
  5. 顶会论文:基于神经网络StarNet的行人轨迹交互预测算法
  6. 如何判断自己是否到了该辞职的时候
  7. Linux常用最基础命令总结
  8. 【原理篇】推荐系统之矩阵分解模型
  9. 详述近期遭利用的 Atlassian Confluence OGNL 注入漏洞 (CVE-2021-26084)
  10. python所有软件-这些Python开源软件解决了程序员几乎所有的问题
  11. paip.提升性能---首页性能加快解决方案
  12. 35家中资上榜全球500大资产管理机构
  13. Android系统内存优化
  14. gcc ------ 编译与链接选项及CFLAGS、LDFLAGS、LIBS
  15. 计算机组装与维护双系统安装,给你的电脑安装一个不可见的WINPE救援系统(独立启动双系统)...
  16. IDEA设置todo快捷键
  17. 中国证券投资基金从业考试 笔记(时间相关)
  18. impala与hive的比较以及impala的有缺点
  19. Python for 循环遍历字符串
  20. 读书笔记——计网概述

热门文章

  1. dvt高危患者的护理措施_DVT的预防措施
  2. 高等数学:第五章 定积分(4) 定积分的换元法
  3. 关于将微博上视频保存在电脑本地的方法汇总
  4. java - (二)netty 心跳监测机制
  5. android 串口通信打开失败
  6. matlab文献资料,matlab文献资料查找方法及资源汇总
  7. HTML鲜花网页制作,Htlm技术设计鲜花盛开效果动态图
  8. 【Java Web基础】(十一)Ajax示例:根据用户输入的学号填充用户信息
  9. linux执行一个可执行文件,不同Linux系统下同一个可执行文件执行有关问题
  10. windows下同一台电脑安装两个mysql数据库