腾讯地图实现地图选点功能

202 阅读1分钟

1.参考腾讯位置服务手册中的地图选点组件地图组件 | 腾讯位置服务

<template>
  <iframe id="mapPage" width="100%" height="100%" frameborder="0" src="https://apis.map.qq.com/tools/locpicker?search=1&type=1&key=自己申请的key值&referer=myapp"></iframe>
</template>

<script setup>
import { ref } from 'vue'

const key = '自己申请的key'

window.addEventListener(
  'message',
  function (event) {
    // 接收位置信息,用户选择确认位置点后选点组件会触发该事件,回传用户的位置信息
    var loc = event.data
    if (loc && loc.module == 'locationPicker') {
      //防止其他应用也会向该页面post信息,需判断module是否为'locationPicker'
      console.log('location', loc) // 这里面存放详细的位置信息
    }
  },
  true
)
</script>

<style lang="scss">
:deep(.map-wrap) {
  height: 60%;
}
</style>

image.png 2. 自己引入腾讯地图实现地图选点功能

  • 在项目的出口文件index.html中引入腾讯位置服务
<script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&key=自己申请的key"></script>

3.初始化地图

//地图
const dataMap = reactive({
  map: '',
  markerLayer: '',
  latitude: '', //纬度
  lngitude: '', //经度
})

onMounted(() => {
  //获取经纬度
  getlocation()
  // 初始化地图
  initMap()
})

//初始化地图
const initMap = () => {
  dataMap.map = new qq.maps.Map(document.getElementById('container'), {
    center: new qq.maps.LatLng(45.190524, 124.797766), //设置地图中心点坐标
    zoom: 20, //设置地图缩放级别
  })
  qq.maps.event.addListener(dataMap.map, 'center_changed', center_changed)
}
// 监听地图拖动获取经纬度
const center_changed = () => {
  dataMap.latitude = dataMap.map.getCenter().lat
  dataMap.lngitude = dataMap.map.getCenter().lng
  console.log(dataMap.latitude, dataMap.lngitude)
}

//获取经纬度
const getlocation = async () => {
  const res = await axios.get('/api', {
    params: {
      key: '自己申请的key',
    },
  })
  dataMap.map.setCenter(new qq.maps.LatLng(res.data.result.location.lat, res.data.result.location.lng))
}