openlayers 使用canvas绘制圆形头像图标
记录一个使用canvas 将一张图片等比缩放,裁剪为一个圆
1、原始图片

2、绘制后在地图中呈现的样式

3、设置样式的函数
/**
* 设置Style
*/
setStyleOnPersonLocation (feature) {
const data = feature.values_
var imgUrl = 'https://person_head_img/avatar.jpg' // 绘制圆角矩形
let canvas = document.createElement('canvas')
canvas.width = 80
canvas.height = 80
var context = canvas.getContext('2d')
var img = new Image()
img.src = imgUrl // 原始图片
let w = canvas.width
let h = canvas.height
img.onload = function () {
context.save()
// context.arc(x,y,r,sAngle,eAngle,counterclockwise);
context.arc(40, 40, 20, 0, 2 * Math.PI) // 从画布上裁剪出这个圆形
context.clip()
// context.drawImage(img,x,y,width,height);
context.drawImage(img, 20, 20, 40, 40)
} // 设置style
return new Style({
image: new Icon({
crossOrigin: 'anonymous',
img: canvas,
imgSize: [w, h]
}),
text: new Text({
text: data.name,
offsetY: -26,
scale: 0.6,
font: '12px Microsoft YaHei',
fill: new Fill({
color: '#808080'
}),
stroke: new Stroke({
color: '#333',
width: 1
})
})
})
},
4、绘制
上面样式设置的函数写好后,这里就可以开始实例化vector , 将其添加到地图中去了
import {Vector as VectorLayer} from 'ol/layer'
import GeoJSON from 'ol/format/GeoJSON'
import VectorSource from 'ol/source/Vector'
import {Point} from 'ol/geom'
import {boundingExtent, getCenter} from 'ol/extent'
import {Style, Icon, Stroke, Text, Fill} from 'ol/style'
methods:{
addlayerToMap(){
const geologyData = {
type: 'FeatureCollection',
crs: {
type: 'Feature'
},
features: [
type: 'Feature',
properties: 'extraData',
id:'userId',
geometry: {
type: 'Point',
coordinates: [104.050629,30.65769]
}
]
}
let nomalSource = new VectorSource({
features: (new GeoJSON()).readFeatures(geologyData)
})
this.shareLocationLayer = new VectorLayer({
source: nomalSource,
// style: _this.setStyleOnPersonLocation // 不能在此设置style 否则地图移动会持续触发重绘
})
this.map.addLayer(this.shareLocationLayer)
this.shareLocationLayer.getSource().forEachFeature(featureObj => {
featureObj.setStyle(_this.setStyleOnPersonLocation(featureObj))
})
}
}
记录记录便于查阅
openlayers 使用canvas绘制圆形头像图标的更多相关文章
- 使用html5 canvas绘制圆形或弧线
注意:本文属于<html5 Canvas绘制图形入门详解>系列文章中的一部分.如果你是html5初学者,仅仅阅读本文,可能无法较深入的理解canvas,甚至无法顺畅地通读本文.请点击上述链 ...
- canvas绘制圆形进度条(或显示当前已浏览网页百分比)
使用canvas绘制圆形进度条,或者是网页加载进度条 或者是显示你浏览了本网页多少-- 由于个浏览器的计算差异,打开浏览器时 初始值有所不同,但是当拉倒网页底部时,均显示100%. 兼容性:测试浏览器 ...
- html5 canvas绘制圆形印章,以及与页面交互
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- canvas绘制圆角头像
如果你想绘制的网页包含一个圆弧形的头像的canvas图片,但是头像本身是正方形的,需要的方法如下:首先, 拿到头像在画布上的坐标和宽高:(具体怎么获取不在此做具体介绍) 使用canvas绘制圆弧动画 ...
- 教你制作挂件头像 | 小程序七十二变之 canvas 绘制国旗头像
昨天朋友圈被「请给我一面国旗@微信官方」刷屏,虽然知道是假的,但是从另一个角度来看,弄清楚如何实现更有趣. 1.canvas 这就不得不提到小程序中的 API canvas,H5 中也是有 canva ...
- canvas 绘制圆形进度条
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- android自定义View绘制圆形头像与椭圆头像
要实现这两种效果,需要自定义View,并且有两种实现方式. 第一种: public class BitmapShaders extends View { private BitmapSh ...
- h5学习-canvas绘制矩形、圆形、文字、动画
绘制矩形<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- 微信小程序之canvas绘制海报分享到朋友圈
绘制canvas内容 首先,需要写一个canvas标签,给canvas-id命名为shareBox <canvas canvas-id="shareBox"></ ...
- canvas绘制简单图形
canvas绘图篇: canvas绘制矩形: <!DOCTYPE html> <html> <head lang="en"> <meta ...
随机推荐
- Python学习笔记--列表来啦!
列表的定义格式 示例: 列表的下标索引(千万别超出范围!!!) 示例: 正向和反向 取出嵌套列表的元素:(二维数组) 列表的常用的操作方法 查找某元素的下标 示例: 修改元素 插入元素 示例: 追加元 ...
- InstructPix2Pix: 动动嘴皮子,超越PS
摘要:InstructPix2Pix提出了一种使用文本编辑图像的方法:给定输入图像和编辑指令,告诉模型要做什么,模型将遵循这些指令来编辑图像. 本文分享自华为云社区<InstructPix2Pi ...
- 给宝宝的AC自动机启蒙指南(宝宝的第一本)
AC自动机 根据已有经验,学完虚数会变虚,然后写出的代码就不是人能看的了 所以我们来学实树罢(喜) 以上为废话博客背景 有限状态自动机 首先我们来了解一下自动机是啥. 说的通俗一点,我们可以把自动机看 ...
- Java (强/弱/软/虚)引用
一.整体架构
- 探究平台化设计的核心思想和Lattice的设计原则
一. 平台对业务敏捷支撑的挑战 早期阿里的交易中台遇到了一些挑战,这个在毗卢的博客中有提到,主要遇到了这些问题:新小业务都有一个成长规律,在早期业务模式验证阶段,需要的玩法比较简单,希望能频繁的发布快 ...
- 技术分享:Proxy-Pool代理池搭建IP代理
技术分享:Proxy-Pool代理池搭建IP代理 前言本章内容仅供参考,不涉及实际使用,主要使用Python环境和Redis数据库进行环境搭建,工具网盘存储如下,有问题可以私聊我.网址:https:/ ...
- Kubernetes(k8s)实现IPv4/IPv6网络双栈
背景 如今IPv4IP地址已经使用完毕,未来全球会以IPv6地址为中心,会大力发展IPv6网络环境,由于IPv6可以实现给任何一个设备分配到公网IP,所以资源是非常丰富的. 配置hosts [root ...
- XXL-JOB定时任务框架(Oracle定制版)
特点 xxl-job是一个轻量级.易扩展的分布式任务调度平台,能够快速开发和简单学习.开放源代码并被多家公司线上产品使用,开箱即用.尽管其确实非常好用,但我在工作中使用的是Oracle数据库,因为xx ...
- mysql 清空数据表id 重1开始 帝国cms清空数据表id 重1开始
alter table phome_ecms_news auto_increment=1; alter table phome_ecms_news_check auto_increment=1; al ...
- Tomcat长轮询原理与源码解析
Tomcat长轮询原理与源码解析 系列文章目录和关于我 零丶长轮询的引入 最近在看工作使用到的diamond配置中心原理,发现大多数配置中心在推和拉模型上做的选择出奇的一致选择了基于长轮询的拉模型 基 ...