vue/react高德地图选点组件(坐标拾取工具)

一些项目会常用到这个功能,把自己做的组件分享一下,vue版和react版都有

vue版 github地址 (vue3)

react版 github地址

效果

安装

vue: npm install vue-map-coord --save

react: npm install react-map-coord --save

使用示例

vue:

<script setup>
import { ref, watchEffect } from "vue";
import CoordMap, { CoordChangeProps, CoordMapExpose } from "vue-map-coord";

const onCoordChange = (value: CoordChangeProps) => {
  console.log(value);
};
const position = ref([120.405985, 36.120701]);
const CoordMapRef = ref<CoordMapExpose>();
watchEffect(() => {
  console.log(position.value);
});
</script>

<template>
  <div style="height:600px">
    <CoordMap
      ref="CoordMapRef"
      mapKey="高德地图key"
      @onCoordChange="onCoordChange"
      v-model:position="position"
    />
  </div>
</template>

react:

import React, { useRef, useState } from "react";
import CoordMap, { CoordChangeProps, CoordMapExpose } from "react-map-coord";

const Example = () => {
  const onCoordChange = (value: CoordChangeProps) => {
    console.log(value);
  };
  const [position, setPosition] = useState([120.405985, 36.120701]);
  const CoordMapRef = useRef<CoordMapExpose>();

  return (
      <div style={{ height: "600px" }}>
        <CoordMap
          ref={CoordMapRef}
          mapKey='高德地图key'
          onCoordChange={onCoordChange}
          position={position}
        />
      </div>
  );
};

组件配置

注意项

组件所在容器需设置高度,或者在配置项属性里设置组件的高度

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
好的,以下是一个简单的 Vue 接入高德地图选点的示例: 1. 在 index.html 中引入高德地图的 js 文件 ``` <script src="//webapi.amap.com/maps?v=1.4.10&key=your-amap-key"></script> ``` 2. 在 App.vue 中创建地图容和初始化地图 ``` <template> <div id="map-container"></div> </template> <script> export default { mounted() { // 创建地图容 const map = new AMap.Map("map-container", { zoom: 10 }); // 初始化地图 AMap.plugin("AMap.Geolocation", () => { const geolocation = new AMap.Geolocation({ enableHighAccuracy: true, // 是否使用高精度定位,默认:true timeout: 10000, // 超过10秒后停止定位,默认:5s buttonPosition: "RB", // 定位按钮的停靠位置 zoomToAccuracy: true // 定位成功后是否自动调整地图视野到定位点 }); map.addControl(geolocation); geolocation.getCurrentPosition(); }); } }; </script> ``` 3. 添加选点功能 ``` <template> <div> <div id="map-container"></div> <div> <button @click="choosePoint">选点</button> <span>经度: {{ location.lng }}</span> <span>纬度: {{ location.lat }}</span> </div> </div> </template> <script> export default { data() { return { location: {} // 保存选定的经纬度 }; }, mounted() { const map = new AMap.Map("map-container", { zoom: 10 }); AMap.plugin("AMap.Geolocation", () => { const geolocation = new AMap.Geolocation({ enableHighAccuracy: true, timeout: 10000, buttonPosition: "RB", zoomToAccuracy: true }); map.addControl(geolocation); geolocation.getCurrentPosition(); }); }, methods: { choosePoint() { // 定义选点插件 const geolocation = new AMap.Geolocation({ enableHighAccuracy: true, timeout: 10000, buttonPosition: "RB", zoomToAccuracy: true }); // 打开选点插件 map.addControl(geolocation); geolocation.getCurrentPosition(); // 监听选点事件 AMap.event.addListener(geolocation, "complete", result => { this.location.lng = result.position.lng; this.location.lat = result.position.lat; }); } } }; </script> ``` 希望这个示例对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值