首页 / 浏览问题 / 其他 / 问题详情
底图是天地图,地图截图涉及跨域问题,无法截图
1EXP 2016年11月15日
地图引用的底图天地图,设计到引用的图片来源跨域,目前iclient 里给的截图例子,无法对天地图截图,总是报安全问题,想问一下有没有合适的解决方案。

1个回答

截图存在跨域的问题,主要是因为Canvas渲染,一个方法是将你自己的程序发布出来或者,二是天地图不使用Canvas渲染,将useCanvas参数设置为false;

温馨提示:下次咨询JavaScript客户端的问题,分类请选择"云GIS"

1,605EXP 2016年11月16日
程序是发布出来的,useCanvas的参数设置也已经是false,但useCanvas这个参数设置只对打印起作用,打印通过useCanvas设置成false可以跳过执行canvas.toDataURL,但地图截图肯定是要canvas.toDataUrl方法的,即使useCanvas设置成false,img的src是天地图的瓦片地址,一执行截图,浏览器还是报安全和跨域问题!最后谢谢您的回答!
最后你怎么处理了啊?我现在也遇到了类似的问题

谢谢
用了一个笨方法,我先把图片的引用地址都改成了Base64编码,然后再用的canvas.toDataUrl方法;缺点是截图花费时间较长

  图片的请求转换方法是:

   url = new URL(imgUrl);             
            
            image = ImageIO.read(url);
            
            String[] imgType = ImageIO.getReaderMIMETypes();
            
            ByteArrayOutputStream baos = new ByteArrayOutputStream();  
            
            ImageIO.write(image, "png", baos);
            
            byte[] bytes = baos.toByteArray();   
          
            imgData.setSuccess(true);    
             
            imgData.setImgSrc("data:image/png;base64,"+new String(Base64.encodeBase64(bytes)));             
                    
            return JacksonUtil.object2json(imgData);
最近有一个项目刚好用到,谢谢啦
...