日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue项目实现高德地图截图

發布時間:2023/12/18 vue 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue项目实现高德地图截图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目背景:

uniapp開發app需用戶截取當前地圖位置,作為附件上傳;奈何uniapp引入高德地圖太麻煩,直接使用webview標簽嵌套map項目的方式實現。

實現步驟:

1、搭建vue項目過程忽略;

2、根據傳參自動計算地圖區域大小(畢竟是app,就算是嵌套也得像是那回事);

3、vue項目引入高德地圖

<!DOCTYPE html> <html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1.0"><link rel="icon" href="<%= BASE_URL %>favicon.ico"><title><%= htmlWebpackPlugin.options.title %></title><style>html,body{margin: 0;padding: 0;}</style><script src="https://webapi.amap.com/maps?v=2.0&key=你自己的key"></script></head><body><noscript><strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><!-- built files will be auto injected --></body> </html>

有個小坑:在html頁面中引入高德api的時候,要寫在head標簽里,相當于是宏任務,按順序,寫在前邊會優先加載,否則地圖初始化方法等都會報錯;

4、地圖方法書寫

<template><div id="map" :style="{width:width+'px',height:height+'px'}"></div> </template> <script> data(){return{ // 這些是動態傳遞過來的參數 width:'',height:'',longitude:'',latitude:''} }, // 處理從url傳遞過來的參數 直接調用取值就可以了 注意最后一個參數 后邊會有vue 歷史模式 '#/'的干擾情況GetUrlParam(paraName){var url = sessionStorage.getItem('href').toString();var arrObj = url.split("?");if (arrObj.length > 1) {var arrPara = arrObj[1].split("&");var arr;for (var i = 0; i < arrPara.length; i++) {arr = arrPara[i].split("=");if (arr != null && arr[0] == paraName) {return arr[1];}}return "";}else {return "";}},// 地圖初始化方法 直接調用就可以了mapInit() {this.map = new AMap.Map('map', {WebGLParams:{ // 這個方法一定要加上 不然截圖方法只能截個寂寞(空白頁面)preserveDrawingBuffer:true },resizeEnable: true,zooms: [4, 18],center: [this.longitude,this.latitude],zoom: 14, defaultCursor: 'pointer',})this.addMarker()} </script>

5、截圖方法引入(這里用的是html2canvas)

引入方法通過npm安裝

官網Getting Started | html2canvas

npm i html2canvas --save// 在需要引用的頁面中調用 import html2canvas from 'html2canvas';

6、開始截圖操作了

// 在頁面中找個元素綁定一個點擊事件 調用一下下邊方法 注意 getImg(){window.pageYOffset = 0;document.documentElement.scrollTop = 0;document.body.scrollTop = 0;html2canvas(document.getElementById('container'), // 要截圖的容器id{backgroundColor:null,//畫出來的圖片有白色的邊框,不要可設置背景為透明色(null)useCORS: true,//支持圖片跨域scale:1,//設置放大的倍數}).then(canvas => {//截圖用img元素承裝,顯示在頁面的上let img = new Image();img.src = canvas.toDataURL('image/jpeg');// toDataURL :圖片格式轉成 base64document.getElementById('test').appendChild(img); // 這是看截圖的頁面承載,可以刪掉//如果你需要下載截圖,可以使用a標簽進行下載let a = document.createElement('a');a.href = canvas.toDataURL('image/jpeg');a.download = 'test';a.click();})}

好了,至此就實現了uniapp 安卓開發嵌套地圖,并實現截圖功能的要求。

獨樂了不如眾樂樂,分享使我快樂!

總結

以上是生活随笔為你收集整理的vue项目实现高德地图截图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。