Vue3引入騰訊地圖包含標(biāo)注簡(jiǎn)易操作指南
1. 引入騰訊地圖API
JavaScript API | 騰訊位置服務(wù) (qq.com)
首先在官網(wǎng)注冊(cè)賬號(hào) 并正確獲取并配置key后 找到合適的引入方式 本文不涉及版本操作和附加庫(kù) 據(jù)體引入?yún)?shù)參考如下圖
具體以鏈接中官方參數(shù)為準(zhǔn)標(biāo)題
在項(xiàng)目根目錄 index.html 中 寫入如下代碼
<!-- 引入騰訊地圖 --> <script src="https://map.qq.com/api/gljs?v=1.exp&key=你的key"></script>
粘貼后key替換為自己的key
2. 創(chuàng)建容器
<div class="map_container" ref="mapRef"></div>
.map_container { width: 500px; height: 500px; position: relative; // 阻止復(fù)制 -webkit-user-select: none; /* Safari */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* IE/Edge */ user-select: none; /* 標(biāo)準(zhǔn)語(yǔ)法 */ }
3. 渲染地圖
<script setup> import { nextTick, ref, onMounted } from 'vue'; onMounted(() => { // 渲染地圖 nextTick(() => { initMap(); }); }); // 經(jīng)緯度 const formData = ref({ lat: 39.98412, lng: 116.307484, }) // 地圖實(shí)例 let map = null // marker圖層 let markerLayer = null // 初始化地圖 const mapRef = ref(null) const TMap = window.TMap const initMap = () => { //定義地圖中心點(diǎn)坐標(biāo) const mapCenter = new TMap.LatLng(formData.value.lat, formData.value.lng) map = new TMap.Map(mapRef.value, { center: mapCenter, //設(shè)置地圖中心點(diǎn)坐標(biāo) zoom: 17, //設(shè)置地圖縮放級(jí)別 pitch: 0, //設(shè)置俯仰角 rotation: 0, //設(shè)置地圖旋轉(zhuǎn)角度 viewMode: '2D' }) // 以下代碼按需添加 // 移除logo以及左下角信息 // let logoInfo = document.querySelector('canvas+div:last-child') // logoInfo.style.display = 'none' // 禁止拖拽 // map.setDraggable(false); // 禁止縮放 // map.setScrollable(false); //移除控件縮放 // map.removeControl(TMap.constants.DEFAULT_CONTROL_ID.ZOOM); // 移除比例尺控件 // map.removeControl(TMap.constants.DEFAULT_CONTROL_ID.SCALE); // 移除旋轉(zhuǎn)控件 // map.removeControl(TMap.constants.DEFAULT_CONTROL_ID.ROTATION); } </script>
4. 點(diǎn)擊地圖 添加單個(gè)標(biāo)注
添加多個(gè)標(biāo)注只需刪除以下函數(shù)即可
markerLayer.setGeometries([])
示例代碼:
<script setup> import { nextTick, ref, onMounted } from 'vue'; onMounted(() => { // 渲染地圖 nextTick(() => { initMap(); }); }); // 經(jīng)緯度 const formData = ref({ lat: 39.98412, lng: 116.307484, }) // 地圖實(shí)例 let map = null // marker圖層 let markerLayer = null // 初始化地圖 const mapRef = ref(null) const TMap = window.TMap const initMap = () => { //定義地圖中心點(diǎn)坐標(biāo) const mapCenter = new TMap.LatLng(formData.value.lat, formData.value.lng) map = new TMap.Map(mapRef.value, { center: mapCenter, //設(shè)置地圖中心點(diǎn)坐標(biāo) zoom: 17, //設(shè)置地圖縮放級(jí)別 pitch: 0, //設(shè)置俯仰角 rotation: 0, //設(shè)置地圖旋轉(zhuǎn)角度 viewMode: '2D' }) // 以下代碼按需添加 // 移除logo以及左下角信息 // let logoInfo = document.querySelector('canvas+div:last-child') // logoInfo.style.display = 'none' // 禁止拖拽 // map.setDraggable(false); // 禁止縮放 // map.setScrollable(false); //移除控件縮放 // map.removeControl(TMap.constants.DEFAULT_CONTROL_ID.ZOOM); // 移除比例尺控件 // map.removeControl(TMap.constants.DEFAULT_CONTROL_ID.SCALE); // 移除旋轉(zhuǎn)控件 // map.removeControl(TMap.constants.DEFAULT_CONTROL_ID.ROTATION); //初始化marker圖層 markerLayer = new TMap.MultiMarker({ map: map }) addMarker() map.on('click', clickHandler) } // 地圖點(diǎn)擊事件 const clickHandler = (event) => { const { lat, lng } = event.latLng formData.value.lat = String(lat).slice(0, 8) formData.value.lng = String(lng).slice(0, 8) addMarker() } // 添加標(biāo)注 const addMarker = () => { // 清空標(biāo)注 使其始終為一個(gè) markerLayer.setGeometries([]) markerLayer.add({ position: new TMap.LatLng(formData.value.lat, formData.value.lng) }) } </script>
5.最終效果
總結(jié)
到此這篇關(guān)于Vue3引入騰訊地圖包含標(biāo)注簡(jiǎn)易操作的文章就介紹到這了,更多相關(guān)Vue3引入騰訊地圖標(biāo)注內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue?element-ui?el-cascader?只能末級(jí)多選問題
這篇文章主要介紹了Vue?element-ui?el-cascader?只能末級(jí)多選問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09vue2項(xiàng)目中封裝echarts地圖的優(yōu)雅方法
這篇文章主要給大家介紹了關(guān)于vue2項(xiàng)目中封裝echarts地圖的優(yōu)雅方法,需要的朋友可以參考下2022-03-03詳解Vue-cli 創(chuàng)建的項(xiàng)目如何跨域請(qǐng)求
本篇文章主要介紹了詳解Vue-cli 創(chuàng)建的項(xiàng)目如何跨域請(qǐng)求 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05Vue3子組件實(shí)現(xiàn)v-model用法的示例代碼
在Vue 3中,實(shí)現(xiàn)自定義的input組件并支持v-model綁定,涉及到對(duì)modelValue這個(gè)默認(rèn)prop的處理和對(duì)應(yīng)的update:modelValue事件的觸發(fā),本文給大家介紹了Vue3子組件實(shí)現(xiàn)v-model用法的示例,需要的朋友可以參考下2024-04-04Vue實(shí)現(xiàn)子組件向父組件傳遞多個(gè)參數(shù)的方法
在Vue框架中,組件間的通信是一個(gè)常見的需求,特別是在子組件需要向父組件傳遞多個(gè)參數(shù)時(shí),合理的通信方式可以顯著提升代碼的可讀性和可維護(hù)性,本文將詳細(xì)介紹如何在Vue中實(shí)現(xiàn)子組件向父組件傳遞多個(gè)參數(shù),需要的朋友可以參考下2024-10-10vue-cli3單頁(yè)構(gòu)建大型項(xiàng)目方案
這篇文章主要介紹了vue-cli3單頁(yè)構(gòu)建大型項(xiàng)目方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04