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í)多選問(wèn)題
這篇文章主要介紹了Vue?element-ui?el-cascader?只能末級(jí)多選問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
vue2項(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)求 ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
Vue3子組件實(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-04
Vue實(shí)現(xiàn)子組件向父組件傳遞多個(gè)參數(shù)的方法
在Vue框架中,組件間的通信是一個(gè)常見的需求,特別是在子組件需要向父組件傳遞多個(gè)參數(shù)時(shí),合理的通信方式可以顯著提升代碼的可讀性和可維護(hù)性,本文將詳細(xì)介紹如何在Vue中實(shí)現(xiàn)子組件向父組件傳遞多個(gè)參數(shù),需要的朋友可以參考下2024-10-10
vue-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

