欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用html2canvas對有百度地圖的Dom元素處理成圖片的解決

  發(fā)布時間:2019-10-12 15:57:39   作者:千尋   我要評論
這篇文章主要介紹了使用html2canvas對有百度地圖的Dom元素處理成圖片的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

問題1:百度地圖應用的是瓦片式圖片(地圖是一張張圖片拼出來的),html2canvas 處理時,遇到非同一域名下的圖片,瀏覽器會顯示跨域的報錯,也無法用反向代理來解決,因為瓦片圖片的域名不確定,無法指定 proxy_pass

解決:使用百度地圖靜態(tài)圖處理( http://lbsyun.baidu.com/index.php?title=static ),這時域名確定了( http://api.map.baidu.com ),可以用反向代理來解決跨域

<!--html-->
<el-image
:src="`/baidu-static/staticimage/v2?ak=yourak&width=1024&height=400¢er=${center.lng},${center.lat}&zoom=16`"
>
<div
  slot="placeholder"
  class="image-slot"
>
  加載中<span class="dot">...</span>
</div>
</el-image>

<!--nginx-->
location ^~ /baidu-static/ {
add_header 'Access-Control-Allow-Origin' "$http_origin" always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-
Since,Keep-Alive,Origin,User-Agent,X-Requested-With' always;
proxy_pass http://api.map.baidu.com/;
}

問題2:地圖上的覆蓋物怎么顯示出來呢

解決:看了下百度地圖靜態(tài)圖的 api, 不能很好的支持覆蓋物自定義樣式,最多可以讓你指定一張自定義的圖片(不能是本地圖片)。中間試過很多辦法,覺得可行的是使用 openLayers.Map, 可是代碼改動的工作量太大了,果斷放棄了。再后來想到自己用 div 直接模擬好覆蓋物,設置比靜態(tài)圖層級高一點就可以解決了。

問題3:用 css 樣式畫了一個虛線圓,在 html2canvas 處理后的生成的圖,發(fā)現虛線變成了實線

解決:使用 canvas 來畫圓

問題4:一個 icon 采用絕對定位,在 html2canvas 處理后的生成的圖,發(fā)現 icon 沒有顯示

解決:給 icon 設置 z-index 大于百度靜態(tài)圖層級(PS: 靜態(tài)圖的樣式也用了絕對定位的情況下)

問題5:在 html2canvas 處理后生成的圖片,有黑色背景色

解決: image/png 改成 image/jpg

try {
  html2canvas(sharePage, {
    useCORS: true
  }).then((canvas) => {
    const imgBase64 = canvas.toDataURL('image/jpg')
    this.data64 = imgBase64
    })
  } catch (err) {
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論