Mapbox GL JS 在前端生成缩略图

*如果可以实现记得点赞分享,谢谢老铁~*

第一步,在工具类中写一个方法,使用 map.getCanvas().toDataURL() 方法获取缩略图的 base64 数据。但本文中采用更轻巧的canvas.toBlob() 来实现。

/**
 * 截取地图生成base64地址的图片
 * @param map 
 */
export const screenshot = (map: any) => {
  return new Promise((resolve) => {
    // 获取地图 canvas 元素
    const canvas = map.getCanvas();
    // 设置要导出的图像分辨率和转换格式
    let format = 'png'; // 您也可以选择使用 jpeg
    let quality = 0.9; // 图像质量,值在 0~1 之间
    // let resolution = 2;// 2 倍的分辨率 
    // let dataURI = canvas.toDataURL('image/' + format, quality);  ps:  弃用
    // 生成的Base64图片将比使用toDataURL方法生成的小得多,并且可以方便地在浏览器中显示和处理。
    canvas.toBlob((blob: any) => {
        const reader = new FileReader();
        reader.readAsDataURL(blob);
        reader.onloadend = () => {
          const base64data = reader.result;
          resolve(base64data);
        }
    }, 'image/jpeg');
  });
}

第二步,在业务代码中引入screenshot此方法。 方法包装在初始化 map 对象后 map?.once(‘idle’)中使用,如下:

// 等待加载完成后再获取画布数据
map?.current?.once('idle', () => {
  const flag = Number(routeParams?.status) !== 0
  getResultImg(flag)
});

//获取地图img
const getResultImg = (flag: boolean) => {
  // canvas截图后的base64
  screenshot(map.current).then((base64Url: any)=>{
    if(base64Url){
      uploadImg({ imgUrl: base64Url}); //todo
    }
  })
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Mapbox GL JS是一个基于WebGL的开源地图库,可用于构建交互式、可自定义的地图应用程序。它提供了强大的地图渲染引擎和丰富的地图功能。 首先,Mapbox GL JS具有强大的渲染引擎,可以高效地将地图数据渲染到Web浏览器上。它使用WebGL技术进行硬件加速,可以高效地绘制大量的矢量地图数据。同时,它支持矢量瓦片地图数据,可以以快速且流畅的方式加载和渲染地图。 另外,Mapbox GL JS提供了丰富的地图功能,可以满足不同的需求。它支持多种交互式的地图操作,如缩放、平移和旋转等。还可以添加自定义的标记、地图样式和图层,以及绘制矢量要素和线条等。此外,它还支持地图的地理编码和路径规划功能,方便用户进行地理位置的查询和导航。 Mapbox GL JS还支持地图的自定义样式,可以根据用户的需求进行个性化的地图设计。它提供了丰富的地图样式模板,用户可以根据自己的喜好选择合适的样式,还可以进行样式的自定义修改。用户可以设置地图的背景色、标记的图标和样式、地图图层的颜色和透明度等,以创建出符合自己需求的独特地图样式。 除了以上的功能,Mapbox GL JS还有许多其他的特性。例如,它支持地图数据的分层加载和动态更新,可以根据需要加载不同层级的地图数据,减少数据传输和渲染的负担。还可以进行地图的动画效果和过渡效果的设置,提升用户体验。此外,Mapbox GL JS还支持跨平台的开发,可以在不同的设备和浏览器上进行地图应用程序的开发和部署。 总之,Mapbox GL JS是一个功能强大且灵活的地图库,可以帮助开发者构建出交互式、可自定义的地图应用程序。无论是对于个人使用还是企业开发,它都提供了丰富的功能和灵活的扩展性,是一个值得推荐的技术工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端加油站

你遇到的坑将由我来踩

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值