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

用凡科做网站好弄吗宁波seo网络推广代理公司

用凡科做网站好弄吗,宁波seo网络推广代理公司,WordPress主题开发核心知识,商城网站建设包括哪些目录 1.前言2.添加一个面要素3.线性渐变3.1 第一个注意点3.2 第二个注意点 4.中心渐变(径向渐变)5.总结 1.前言 OpenLayers官网有整个图层的渐变示例,但是没有单个要素的渐变示例,我们这里来补充一下。OpenLayers中的渐变是通过fi…

目录

  • 1.前言
  • 2.添加一个面要素
  • 3.线性渐变
    • 3.1 第一个注意点
    • 3.2 第二个注意点
  • 4.中心渐变(径向渐变)
  • 5.总结

1.前言

  OpenLayers官网有整个图层的渐变示例,但是没有单个要素的渐变示例,我们这里来补充一下。OpenLayers中的渐变是通过fill选项中实现的。fill选项可以传一个ColorLike,本质是通过Canvas实现的,此时ColorLike对应的是CanvasPatternCanvasGradient

2.添加一个面要素

const source = new VectorSource();let polygon = new Feature({geometry:new Polygon([[[106.542384,30.485627],[106.542384,40.485627],[117.542384,40.485627],[117.542384,30.485627],[106.542384,30.485627],]])});source.addFeature(polygon)const vectorLayer = new VectorLayer({source: source,});const map = new Map({layers: [vectorLayer],target: 'map',view: new View({center: [126.980366, 37.52654],zoom: 1,projection:'EPSG:4326'}),});

在这里插入图片描述

3.线性渐变

//import {DEVICE_PIXEL_RATIO} from 'ol/has'
getLineGradientStyle(){const canvas = document.createElement('canvas');const context = canvas.getContext('2d');const pixelRatio = DEVICE_PIXEL_RATIO;let gradient = context.createLinearGradient(0,0,1024*pixelRatio,0);let mainColor = '#56e90e';let secondColor = '#0e57e9';gradient.addColorStop(0,mainColor);gradient.addColorStop(1,secondColor);return gradient;
}
let style = new Style({fill:new Fill({color:this.getLineGradientStyle()})
})
polygon.setStyle(style)

在这里插入图片描述

3.1 第一个注意点

  现在我们的要素在地图的正中间,能看到两个颜色之间的过渡。我们把地图左键进行移动一下,使得要素分别在最后边和最后边,然后再来看看效果。
在这里插入图片描述
在这里插入图片描述
  发现了什么?效果是变化的!所以我们的渐变策略是不太对的,渐变填充应该根据面的范围以及当前所处的位置来进行动态计算。具体来说就是要在createLinearGradient的时候去动态计算.现在我把渐变改成从【512,0】到【1024,0】的渐变,然后我们把地图往左移动,再看看效果

let gradient = context.createLinearGradient(512*pixelRatio,0,1024*pixelRatio,0);

在这里插入图片描述
  这次发现了什么?貌似始终是在【512,0】到【1024,0】渐变。但如果你真的这样以为了,那你就错了。现在把地图往右移动,看看会发生什么事?
在这里插入图片描述
  好像渐变的位置发生了偏移,不是我们最初设定的【512,0】到【1024,0】了。为什么挥发生这种现象。我们来看OpenLayers官网是是怎么解释的。在OpenLayers官网关于渐变有这样一段描述:
在这里插入图片描述
翻译过来就是

CanvasRenderingContext2D.fillStyle或CanvasRendering Context2D.strokeStyle接受的类型。表示颜色、图案或渐变。图案和渐变作为填充样式的原点是从地图坐标[0,0]增加512个css像素。对于无缝重复图案,图案图像的宽度和高度必须是两倍(2,4,8,…,512)。

  重点是这一句:图案和渐变作为填充样式的原点是从地图坐标[0,0]增加512个css像素
  也就是说这个[0,0]是屏幕坐标,不是我们以为的经纬度坐标。而且渐变的位置也不是我们想要的,我们想要的是从某个经纬度到某个经纬度的渐变。

3.2 第二个注意点

  512个css像素是什么意思?
  :屏幕在出厂时就从硬件上面决定了,用几个物理像素来代表一个css像素。因此才有设备像素比这个参数,也就是我们上文导入的DEVICE_PIXEL_RATIO

4.中心渐变(径向渐变)

getCenterGradientStyle(polygon){let canvas = document.createElement('canvas');const context = canvas.getContext('2d');let extent = polygon.getExtent()let minLon = extent[0]let maxLon = extent[2]let minLat = extent[1]let maxLat = extent[3]let resolution = this.map.getView().getResolution()const pixelRatio = DEVICE_PIXEL_RATIO;let height = (maxLat - minLat)/resolution*pixelRatiolet width = (maxLon-minLon)/resolution*pixelRatiocanvas.width = widthcanvas.height = heightlet radius = Math.max(height,width)let center = map.getPixelFromCoordinate([(minLon+maxLon)/2,(maxLat+minLat)/2])let gradient = context.createRadialGradient(center[0],center[1],radius/6,center[0],center[1],radius/2)let mainColor = '#56e90e';let secondColor = '#0e57e9';gradient.addColorStop(0,mainColor);gradient.addColorStop(1,secondColor);return gradient;
}
let style = new Style({fill:new Fill({color:this.getCenterGradientStyle()})
})
polygon.setStyle(style)

在这里插入图片描述

在change:resolution事件中去调用,保证算出来的宽高的正确性

5.总结

  OpenLayers中的渐变效果实在很难令人满意,又或者是我们理解的有问题,因为其是动态变化的,我们很难得到想要的结果。目前,我们要时刻注意监听视图的变化来修改渐变的效果。本文算是抛砖引玉吧,如果某位有志之士能谁能解决掉这个问题,希望能告诉我一下,回见~

http://www.hrbkazy.com/news/48565.html

相关文章:

  • 微信外链网站付费推广有几种方式
  • 电子商务网站开发项目设计报告公司网站如何制作设计
  • 智能家居型网站开发关键词seo优化软件
  • 旅游公司网站模板关键词歌词图片
  • 广州网站开发企业网站seo推广平台
  • 高端it网站建设成都本地推广平台
  • 网站建设的收费标准电商最好卖的十大产品
  • 网上做任务网站百度关键词优化是什么意思
  • 网站设计和程序员百度搜索关键词推广
  • 做模式网站百度服务热线电话
  • 谁知道陕西省建设监理协会的网站百度seo发包工具
  • drupal 网站实例seo分析是什么意思
  • wordpress新页面404佛山seo整站优化
  • 海淀网站建设公司百度收录批量提交入口
  • nodejs做视频网站大白兔网络营销策划书
  • 整站优化服务深圳网络营销
  • 自己可以做防伪网站吗电商运营方案
  • 网站服务器搭建教程推广方案流程
  • wordpress伪静态html站长工具seo综合查询官网
  • 专做企业网站的西地那非片吃了多久会硬起来
  • 前端开发框架有哪些seo优化顾问服务
  • 建设雅马哈摩托车官网安卓系统优化软件
  • 单页网站上传教程淘宝关键词指数
  • 网站编排页面数据交换平台
  • 怎样把自己的网站做推广足球最新世界排名表
  • 温州专业微网站制作seo排名查询
  • 哪些网站是用asp.net做的广东河源最新疫情
  • 做教育类的网站名关键词优化有哪些作用
  • 厦门网站公司网站建设需求模板
  • 怎么建商业网站百度一下百度一下你就知道