基于Vue结合高德地图api做的一个坐标拾取组件

描述

最近需要做一个地图坐标拾取的功能,根据用户点击的位置,获取当前点击位置的经纬度。根据用户输入的经纬度然后标记到那个点位。用高德地图写了一个这样的组件。
实际效果:
在这里插入图片描述

说明

如果对高德地图很熟悉的话,其实实现很简单。

用户点击地图获取经纬度实现:
监听用户在地图上的点击事件,获取到点击位置的经纬度,然后拿着这个经纬度,高德地图有个点标记工具,在那个位置标记这个点。

用户输入经纬度在地图上标点
就是上一个功能的后半截,拿到这个经纬度标记点。

高德api的话可以点击这里去看下
获取当前点击位置经纬度
https://lbs.amap.com/api/javascript-api/example/map/click-to-get-lnglat
设置点标记
https://lbs.amap.com/api/javascript-api/example/marker/marker-content

上完整代码

首先,最重要的,你要导入高德地图

<script src="https://webapi.amap.com/maps?v=1.4.15&key=您申请的key值"></script>

新建一个坐标拾取组件

<template>
  <div class="coordinateMap">
    <div class="coordinateMap_input">
      <el-input
        v-model="lng"
        placeholder="点击地图或输入经度"
        @change="lnglatChange"
      ></el-input>
      <div style="width:50px"></div>
      <el-input
        v-model="lat"
        placeholder="点击地图或输入纬度"
        @change="lnglatChange"
      ></el-input>
    </div>
    <div
      id="map"
      class="map"
    >
    </div>
  </div>
</template>

<script>
var map
var mouseTool
export default {
  data() {
    return {
      lastDot: '',
      marker: null,
      lng: '',
      lat: '',
    }
  },
  mounted() {
    this.initMap()
    //监听用户的点击事件
    map.on('click', (e) => {
      this.lng = e.lnglat.getLng()
      this.lat = e.lnglat.getLat()
      this.addDot()
    })
  },
  methods: {
    initMap() {
      map = new AMap.Map('map', {
        resizeEnable: true, //是否监控地图容器尺寸变化
        zoom: 11, //初始化地图层级
        center: [116.46,39.92] //初始化地图中心点
      });
    },
    lnglatChange() {
      this.addDot()
      //自适应中心点
      map.setFitView();
    },
    //增加点标记
    addDot(){
       if (this.marker) {
        this.marker.setMap(null);
        this.marker = null;
      }
      this.marker = new AMap.Marker({
        position: new AMap.LngLat(this.lng, this.lat)
      });
      let lnglat = {}
      lnglat.lng = Number(this.lng)
      lnglat.lat = Number(this.lat)
      this.$emit("giveLnglat", lnglat);
      map.add(this.marker);
    },
  }
}
</script>

<style lang="less" scoped>
.coordinateMap {
  width: 500px;
  .coordinateMap_input {
    display: flex;
    margin-bottom: 15px;
  }
  .map {
    width: 500px;
    height: 300px;
    border-radius:6px;
  }
}
</style>

父组件使用

//首先导入组件,因为这个组件只有个别页面引入,所以就不需要注册全局组件了,直接导入使用
import CoordinateMap from '@/components/coordinateMap.vue'
//注册组件
components: {
    CoordinateMap
  },

//使用组件
 <CoordinateMap @giveLnglat="getLnglat"></CoordinateMap>

//然后在这个getLnglat事件里面就可以获取到用户当前点击位置的经纬度了
 getLnglat(lnglnt) {
      console.log(lnglnt)
    }

到这里就结束了,就是很简单的对高德地图api的使用,希望能够帮助到大家。

个人水平有限,有问题欢迎大家留言指导,仅供学习和参考。

学海无涯!努力二字,共勉!

Vue2中使用高德地图进行坐标标点,你可以按照以下步骤进行操作: 1. 首先,在你的HTML文件中导入高德地图API。你可以使用以下代码: ```html <script src="https://webapi.amap.com/maps?v=1.4.15&key=您申请的key值"></script> ``` 确保将`您申请的key值`替换为你在高德地图开发者平台申请的API密钥。 2. 在Vue组件中导入`coordinateMap.vue`组件。你可以使用以下代码: ```javascript import CoordinateMap from '@/components/coordinateMap.vue' ``` 确保路径正确,根据你的项目结构进行相应的调整。 3. 注册`CoordinateMap`组件。在Vue组件的`components`选项中添加以下代码: ```javascript components: { CoordinateMap } ``` 4. 在Vue组件中使用`CoordinateMap`组件。在模板中添加以下代码: ```html <CoordinateMap @giveLnglat="getLnglat"></CoordinateMap> ``` `@giveLnglat`是一个自定义事件,用于从`CoordinateMap`组件中获取用户当前点击位置的经纬度。`getLnglat`是你在Vue组件中定义的方法,用于处理获取到的经纬度数据。 5. 在Vue组件中定义`getLnglat`方法。在Vue组件的方法中添加以下代码: ```javascript methods: { getLnglat(lnglat) { console.log(lnglat) } } ``` 这个方法将获取到的经纬度数据作为参数,并在控制台中打印出来。你可以根据需要对经纬度数据进行进一步处理或使用。 通过以上步骤,你就可以在Vue2中使用高德地图进行坐标标点了。记得替换相关的API密钥和路径,根据你的具体需求进行适当的修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [基于Vue结合高德地图api一个坐标拾取组件](https://blog.csdn.net/qq_37131884/article/details/104071925)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值