openlayer4地图及图层导出图片问题小结

37.在 Vue 3 中使用 OpenLayers 导出地图图片(JPG) 通过本文的讲解,你已经学会如何在 Vue 3 中使用 OpenLayers 实现地图导出为图片的功能。此功能可以为用户提供方便的下载选项,将地图图像保存为 JPG 格式,并可应用于各种地图应用场景,如地理信息展示、数据分析等。你可以根据需要扩展该功能,加入更多的地图交互特性,或者支持不同格式的图片导出。希望本文对你有帮助,祝你在使用 Vue 和 OpenLayers 时一切顺利! 阅读详情

直接使用ol4中的地图导出功能在我们的项目中可能会存在跨域问题,导致地图不能正常的转为二进制。

解决方法:

1 //自定义图层中添加crossOrigin,具体如下:
        var tdtTerLayer = new ol.layer.Tile({
            visible: true,
            source: new ol.source.XYZ({
                crossOrigin: 'anonymous',
                url: tdtter
            })
        });


        var edge = new ol.layer.Image({
            source: new ol.source.ImageArcGISRest({
                crossOrigin: 'anonymous',
                ratio: 1,
                params: {},
                url: jsmap
            })
        });

2//叠加显示

var map = new ol.Map({
            controls: ol.control.defaults().extend([
                new ol.control.ScaleLine({}),
                new ol.control.ZoomSlider({}),
                new ol.control.ZoomToExtent({})]),
            target: 'map',
            layers: [
             tdtTerLayer, edge
           //  openstreemap,contries
            ],
            view: new ol.View({
                maxZoom: 19,
                minZoom: 6,
                projection: epsgWMproj,
                center: ol.proj.transform([120.3351, 31.1918], epsg84proj, epsgWMproj),
                zoom: 8
            })
        });

3//导出函数

       function readBlobAsDataURL(blob, callback) {
            var a = new FileReader();
            a.onload = function (e) {
                callback(e.target.result);
            }
            a.readAsDataURL(blob);
        }




        $("#savemap").click(function () {
            map.once('postcompose', function (event) {
                var canvas = event.context.canvas;
                var SLT_pic = new ArrayBuffer();


                if (navigator.msSaveBlob) {
                    var ttt = canvas.msToBlob();//此处将图片转成二进制
                    


                    readBlobAsDataURL(ttt, function (dataurl)
                    {
                        var name = "testpic.png";
                        post_webservice_async_json({ "oper": "SaveIMG","picname":name,"oge": dataurl });
                    })


                } else {
                    canvas.toBlob(function (blob) {
                        var mmm = blob;
                        alert("Binary pic",mmm);
                    });
                }
            });
            map.renderSync();
        });


        function post_webservice_async_json(paramObj) {
            var returnStr = "";
            var defer = $.Deferred();
            $.ajax({
                type: 'post',
                async: true,
                dataType: 'json',
                url: 'Test.ashx',
                traditional: true,
                data: { paramInfo: JSON.stringify(paramObj) },
                success: function (data) {
                    //alert("保存图层成功");
                    defer.resolve(data);
                }
            })
            return defer.promise();
        }


4//图片保存

 string res;
        string paramInfo = null;
        paramInfo = context.Request.Form["paramInfo"];
        //图片读取
        if (paramInfo != null && paramInfo != "")
        {
            JavaScriptSerializer aa = new JavaScriptSerializer();


            Dictionary<string, string> dic = aa.Deserialize<Dictionary<string, string>>(paramInfo);


            string obj = dic["oge"].Replace(" ", "+").Split(',')[1];


            byte[] array = Convert.FromBase64String(obj);


            string oper = dic["oper"];
            string picname = dic["picname"];

          //图片保存到当前项目文件下
            MemoryStream ms = new MemoryStream(array);

            Image image = new Bitmap(ms);

            image.Save(context.Server.MapPath(@"~2.png"));

        }
       


029:vue+openlayers:使用MVT格式读取瓦片数据(示例代码) 本示例的目的是介绍演示如何在vue+openlayers中使用MVT读取矢量瓦片数据,并显示图形。直接复制vue+openlayers源代码,操作2分钟即可运行实现效果 阅读详情

相关推荐

Vue+OpenLayers7入门到实战:OpenLayers导出整幅地图为png图片并保存下载

本章介绍如何使用OpenLayers7地图导出整幅地图为png图片并保存下载。有时候截图只能截一部分地图,而我们想要整幅地图和上面叠加的所有图层内容全部导出来,本章就是结局的这个问题,简单写一下OpenLayers保存整幅地图为png图片并下载功能。

GIS技术方向,GIS地图技术分享(GIS入门、Openlayers教程、Leaflet教程),做最好的GIS地图开发教程。关注博主公众号:eguid 787

Openlayers 教程 - 地图以及图层数据导出(打印)图片

Openlayers 教程 - 地图以及图层数据导出(打印)图片。

非科班Java出身GISer的博客 2787

43-OpenLayers6入门-OpenLayers导出整幅地图为png图片并保存下载

43-OpenLayers6入门-OpenLayers导出整幅地图为png图片并保存下载

fxshy的博客 468

OpenLayers3, 导出图片

本文基于OpenLayers3,canvas转图片实现地图导出图片的功能。以上为基于openlayer3 实现导出图片的简单案例,希望对您有帮助~

我哎GIS博客 1601

openlayers:实现将地图导出为PNG图像 (附完整源码)

openlayers:实现将地图导出为PNG图像 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 483

全面解决OpenLayers跨域问题的策略指南

本文还有配套的精品资源,点击获取 简介:OpenLayers是一个开源的JavaScript地图库,但跨域请求限制可能影响地图服务加载。本文深入探讨了理解同源策略的重要性,并提供了多种解决OpenLayers中跨域问题的方法,包括JSONP、CORS配置以及设置代理服务。详细步骤涵盖了检查服务支持、OpenLayers配置、代理服务设置以及测试验证。通过这些策略,开发者可以...

weixin_36369848的博客 1682

五十七、openlayers官网示例Map Export解析——将地图导出为图片

然后绑定一个点击事件,使用this.map.renderSync()同步渲染一次地图,让地图触发rendercomplete事件。因为openlayers绘制的地图上有好几canvas画布,所以要把它们都拿到,并把图像绘制到一个新的canvas上。比如transform的matrix矩阵属性,若存在,需要将transform重新设置给新的mapContext。也就是说,只要写以下几行代码,就可以实现基本的导出功能。在canvas上绘制图形,并导出为图片。说地图导出前,我们先来看一个例子。

aaa_div的博客 1530

给麒麟KylinOS服务器加把锁:手把手配置符合等保要求的密码强度策略

本文详细介绍了如何在麒麟KylinOS服务器上配置符合等保要求的密码强度策略,包括pwquality.conf和login.defs的核心参数设置、等保合规的进阶配置技巧以及企业环境中的平衡艺术。通过实战案例和测试方法,帮助管理员构建坚固的密码防线,确保系统安全。

weixin_33749242的博客 419

OpenLayers 截图导出方式 html2canvas 以及 直接从地图的导出

自己做一下记录,备忘。 方式一:html2canvas截图方式,需要下载对应的js文件。之前遇到的问题截取不出来,导出的图片只看到div id =printcontent 的背景色,不设置背景颜色就可以了。 (html2canvas(document.getElementById("printcontent"), {         async: false, allowTaint: true...

Trustport的博客 6637

多层下拉框_HLM多层线性模型|HLM2教程

01多层线性模型简介多层线性模型(Multilevel linear model),又称为多层分析、分层线性模型。其本质是线性模型的线性模型、回归的回归。本文主要介绍如何使用HLM6.08软件来构建两层线性模型。02案例简介水平1文件:样例数据HSB1.sav包括7185个案例和4个变量:MINORITY:种族(1=minority, 0=other)FEMALE:性别(1=femal...

weixin_35714534的博客 5620

图像修复黑科技:对比BM3D/DnCNN等5种去噪器在PNP框架中的实战效果

本文深度评测了BM3D、DnCNN等五款主流去噪器在即插即用(PnP)优化框架中的实战表现。通过量化指标、视觉对比及超分等泛化任务测试,揭示了深度学习模型在性能与收敛速度上的优势,并为不同应用场景提供了选型指南与工程化建议。

weixin_29065959的博客 369

openlayers 将地图导出成图片

转至:https://blog.youkuaiyun.com/u013240519/article/details/81330021 在做完应急指挥地图后,心血来潮想着将应急指挥地图导出成图片,然后在导出图片时出现一个错误。 Uncaught DOMException: Failed to execute ‘toDataURL’ on ‘HTMLCanvasElement’: Tainted canvases may not be exported. 这是由于在导出图片时,涉及到了跨域的问题。 解决办法是给天地图的s

qq_38000851的博客 2411

多普勒效应及多普勒频移的简单推导

多普勒频移的简单推导

m0_47867419的博客 3万+

[转]Openlayers中图片导出功能实现及可能存在的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/u013240519/article/details/81330021 openlayers v4.6.5给出的例子 //引用FileSaver.js <script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.3...

enenwan的专栏 773

摄像头读取出现VIDIOC_STREAMON: No space left on device 错误

先说下原因,linux中为usb camera提供了一个标准的V4L2的驱动以方便使用,只要符合驱动规范就可以实现即插即用usb camera设备,即免驱动安装。 但市面上的USB 摄像头都是2.0的。usb bus的 bandwidth是有限的,而V4L2驱动采用的是贪心原则,即camera会要求获取最大带宽;因此将两个camera接入一路usb bus,打开第二个camera(尤其是采用YUV...

houge101的博客 9290

『杭电1199』Color the Ball

Problem Description There are infinite balls in a line (numbered 1 2 3 ....), and initially all of them are paint black. Now Jim use a brush paint the balls, every time give two integers a b and follow by a char 'w' or 'b', 'w' denotes the ball from a to

漠宸离若的博客 498

OpenLayers源码阅读(三):ImageWMS及ImageArcGISRest

前提:需要理解常见的地图服务WMS、WMTS、WFS等,针对本文,主要理解WMS服务及其GetCapabilities、GetMap、GetFeatureInfo操作即可。 说明:本文重点关注ol.source.Image部分 1、我们如何使用( 官网例子http://openlayers.org/en/v4.6.5/examples/wms-image.html?q=wms) ...

高端客户 4569

弱网、高热、只有 32MB 内存:恶劣环境下嵌入式 SoC 音视频开发的“不死”法则

永远不要假设。你申请一个 1920 宽的图像,硬件为了对齐(比如 16 字节对齐或 256 字节对齐),实际分配的一行可能有 1936 甚至是 2048 字节。那个多出来的部分叫Padding。如果你写代码时用来计算数据量,或者用Width来做指针偏移:恭喜你,你的画面会像被风吹歪的百叶窗一样,产生斜切畸变。永远使用VB_CONF结构体里返回的u32Stride字段。这是区分新手和老手的试金石。第六章 ISP 调优(Tuning)实战:为什么你调出的画面像个“鬼片”?

大模型大数据攻城狮的专栏 1769

vue+openlayers导出整幅地图为image图片(附源码)

vue+openlayers导出整幅地图为image图片(附源码)

whs15193553607的博客 890

大唐杯历届省赛押题训练(6)

考试-TD-LTE无线网络设备介绍-TD-LTE网络架构一、单选题1TD-LTE的接入网E-UTRAN由下列哪些网元组成( )。0分/1分A、RNCB、BTSC、eNode BD、Node B提交答案:B正确答案:C考点TD-LTE网络架构解析暂无试题解析二、多选题1关于LTE网络整体结构,哪些说法是正确的( )0分/2分A、E-UTRAN用E-NodeB替代原有的RNC-NodeB结构B、E-NodeB间的接口为S1接口C、各网络节点之间的接口使用IP传输。

nimo观察者 638

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Openlayers中图片导出功能实现及可能存在的问题

openlayers v4.6.5给出的例子 //引用FileSaver.js &amp;lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.3/FileSaver.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt; //添加导出按钮 &amp;lt;a id=&quot;export-png&

高端客户 3887

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

openlayer地图导出指定范围图片文件

openlayer地图导出指定范围图片文件 在gis系统中我们经常遇到将指定区域的地图导出为图片文件,在openlayer官网提供了导出样例https://openlayers.org/en/latest/examples/export-map.html,导出文件格式为base64编码。 but 大家在使用过程中肯能会遇到导出文件失败 该问题经过网上查阅资料发现,是由于跨域请求导致,加载地图时未设置允许跨域。设置为允许跨域后一切正常。 具体代码如下: let layer = new ol.layer

java coder https://github.com/pmsyn/ https://gitee.com/pmsyn 2074

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【ArcGIS Server | 学习】发布地图服务并在Openlayers中调用

在学习了Oracle数据库基础以后,本想在ArcGIS中连接Oracle数据库(图解ArcSDE10.2 for Oracle 11g 安装-百度经验 (baidu.com)), 但在授权文件中出现arcgis server.ecp的相关信息,便对下面的工作造成困扰。于是,转而研究了一下ArcGIS Server的相关内容。 以往的知识储备告诉我,通过Server将制作好的地图数据发布,就可以在其他Web界面调用我发布的服务网址,融合其他的Web端操作,提供给用户基于此地图的多种功能。 首先按照以下方

Yangol_Arc的博客 1955

openlayers 保存当前地图View为图片

/** * 保存地图为图片工具栏 */function addMapToolSavePicture() { var saveElement = document.createElement('a'); saveElement.className = "mapbtn glyphicon glyphicon-picture"; saveElement.setAttribute("da...

weixin_30553065的博客 680

openlayer常见问题

1、找到的OpenLayers跨域访问WFS服务出现No 'Access-Control-Allow-Origin' header is present...错误的一种解决办法 在eclipse中部署了一个使用OpenLayers的Java web项目CrossDomainTest,容器为Tomcat 7.0.56.(http://localhost:8080/CrossDomainTest/i

GIS笔记 2986

openlayers导出底图报错Failed to execute ‘toBlob‘ on ‘HTMLCanvasElement‘: Tainted canvases may not be expor

在添加瓦片图层的时候,加上跨域属性。

· 644
上一篇: 在OpenLayers4中将地图及叠加显示的图层生成图片保存到数据库方法
下一篇: OpenLayer4叠加geojson数据增加监听事件获取该geojson数据的相关属性
David_SIAT
博客等级 码龄18年 131粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值