openlayers配合html2canvas通过屏幕坐标截取部分区域

//45度转为弧度为0.78539816339
draw = new Draw({
    source,
    type:"Circle",
    geometryFunction: createRegularPolygon(4,0.78539816339)
})
this.map.addInteraction(draw) ;
this.map.addLayer(this .polygonLayer);
draw.on( "drawend",(e) => {
//获取polygon实体
const polygon = e.feature.getGeometry();
//通过实体获取经纬度位置数组
const poly_positionArr = polygon.getCoordinates();
let pixelArr = [];
//转换为屏幕坐标
for (const item of poly positionArr[o]){
    pixelArr.push(this .map.getPixelFromCoordinate(item))
}
//局部截图,pixelArr从右下开始逆时针,因旋转45度 所以从右上开始
//获取正方形边长和左上xy坐标点
this.h2sidewidth = pixelArr[0][0] - pixelArr[1][0];
this.h2x = pixelArr[1][0];
this.h2y = pixelArr[1][1];
})

使用插件截图:

//canvas截屏
screenshot(type) {
let canvas = "";
if (type == "ol") {
html2canvas(document.getElementById("map"),{
useCORs: true
x: this.h2x,
y: this.h2y,
width: this.h2sidewidth,
height: this.h2sideheigth,
// dpi:window.devicePixelRatio * 2
}).then((canvas) => {
let image = canvas.toDataURL("image/png").replace("image/png","image/octet-stream");
let blob = this.dataURLtoBlob(image);
this.fastPositionform.url = URL.createObjectURL(blob);
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值