记录一个使用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绘制圆形头像图标的更多相关文章

  1. 使用html5 canvas绘制圆形或弧线

    注意:本文属于<html5 Canvas绘制图形入门详解>系列文章中的一部分.如果你是html5初学者,仅仅阅读本文,可能无法较深入的理解canvas,甚至无法顺畅地通读本文.请点击上述链 ...

  2. canvas绘制圆形进度条(或显示当前已浏览网页百分比)

    使用canvas绘制圆形进度条,或者是网页加载进度条 或者是显示你浏览了本网页多少-- 由于个浏览器的计算差异,打开浏览器时 初始值有所不同,但是当拉倒网页底部时,均显示100%. 兼容性:测试浏览器 ...

  3. html5 canvas绘制圆形印章,以及与页面交互

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. canvas绘制圆角头像

    如果你想绘制的网页包含一个圆弧形的头像的canvas图片,但是头像本身是正方形的,需要的方法如下:首先, 拿到头像在画布上的坐标和宽高:(具体怎么获取不在此做具体介绍) 使用canvas绘制圆弧动画 ...

  5. 教你制作挂件头像 | 小程序七十二变之 canvas 绘制国旗头像

    昨天朋友圈被「请给我一面国旗@微信官方」刷屏,虽然知道是假的,但是从另一个角度来看,弄清楚如何实现更有趣. 1.canvas 这就不得不提到小程序中的 API canvas,H5 中也是有 canva ...

  6. canvas 绘制圆形进度条

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. android自定义View绘制圆形头像与椭圆头像

    要实现这两种效果,需要自定义View,并且有两种实现方式.   第一种: public class BitmapShaders extends View {     private  BitmapSh ...

  8. h5学习-canvas绘制矩形、圆形、文字、动画

    绘制矩形<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...

  9. 微信小程序之canvas绘制海报分享到朋友圈

    绘制canvas内容 首先,需要写一个canvas标签,给canvas-id命名为shareBox <canvas canvas-id="shareBox"></ ...

  10. canvas绘制简单图形

    canvas绘图篇: canvas绘制矩形: <!DOCTYPE html> <html> <head lang="en"> <meta ...

随机推荐

  1. Mybatis数据库驱动

    Mybatis数据库驱动 最近在学习mybatis的源码,有一个databaseIdProvider根据不同数据库执行不同sql的功能,我正好有一个mysql还有一个瀚高数据库,就去试了一下,使用如下 ...

  2. Quicker快速开发,简单的网页数据爬取(示例,获取天眼查指定公司基础工商数据)

    前言 有某个线上项目,没有接入工商接口,每次录入公司的时候,都要去天眼查.企查查或者其他公开数据平台,然后手动录入,一两个还好说,数量多了的重复操作就很烦,而且,部分数据是包含超链接,一不注意就点进去 ...

  3. ChatGPT 开源了第一款插件,都来学习一下源码吧!

    3 月 23 日,OpenAI 又投出了一枚重磅炸弹:为 ChatGPT 推出插件系统! 此举意味着 ChatGPT 将迎来"APP Store"时刻,也就是围绕它的能力,形成一个 ...

  4. python:调用内置函数

    问题描述:尝试下博客园如何上传GIF # hzh 每天进步一点点 # 2022/5/13 17:24 import colorama import time import os colorama.in ...

  5. 数据泵:19c PDB数据泵迁入

    1.问题描述 用数据泵进行pdb的迁入迁出,模拟测试将其他库的数据导入到19cpdb中 2.环境介绍 source:12.2.0.1.0 target:19.0.0.0.0 3.源端制造数据 创建表空 ...

  6. SQL concat_ws, collect_set, 和explode合并使用

    1. 背景 有一个这样的数据集:字段和字段的值是两列 目的是将这个数据转换成规整的一个特征是一列的数据: 2. 做法 第一步:先造出列 select ucid ,CASE WHEN type ='性别 ...

  7. PHP利用 JSON 将XML转换为数组

    在很多开发项目中,我们都会遇到将XML文件转换为数组使用,因此在本篇 PHP教程 中,UncleToo和大家一起学习 如何转换XML为数组 . 现在有一个uncletoo.xml的配置文件,格式如下: ...

  8. 用Abp实现找回密码和密码强制过期策略

    @ 目录 重置密码 找回密码 发送验证码 校验验证码 发送重置密码链接 创建接口 密码强制过期策略 改写接口 Vue网页端开发 重置密码页面 忘记密码控件 密码过期提示 项目地址 用户找回密码,确切地 ...

  9. 迁移学习(PAT)《Pairwise Adversarial Training for Unsupervised Class-imbalanced Domain Adaptation》

    论文信息 论文标题:Pairwise Adversarial Training for Unsupervised Class-imbalanced Domain Adaptation论文作者:Weil ...

  10. 为什么数据库project被做成了web开发啊啊——一个半小时实现增删查改

    昨天晚上去小破站上找了一点点~~亿点点~~资料,仔细研究了一下我们项目说明文档里的restful框架,发现可以直接用django_restful_framework. 天大的好消息啊!今天下午有三个小 ...