vue3.0使用vue-amap插件(定位,搜索查询,根据坐标获取具体地址,marker图标)

这是vue-amap地图引入基本的地图
https://blog.csdn.net/zjingru/article/details/110948556

需求:当进入地图页面,定位到当前位置,显示点坐标,搜索框显示当前坐标的具体位置。点击地图,搜索框显示点击坐标的具体位置,搜索后地图中心点为搜索后的位置。

<template>
  <div>
    <div class="amap-page-container">
    // 搜索的组件 cv就可
      <el-amap-search-box
        class="search-box"
        :search-option="searchOption" //搜索条件
        :on-search-result="onSearchResult"	//搜索回调函数
      ></el-amap-search-box>
      <el-amap	//地图
        ref="map"
        vid="amapDemo"
        :amap-manager="amapManager"
        :center="center"
        :zoom="zoom"
        :plugin="plugin" //地图绑定的插件 初始化的时候会调用
        :events="events"
        class="amap-demo"
      >
    	 //点标记在地图上显示的位置,默认为地图中心点。  只position绑定center就好了	
        <el-amap-marker :position="center"></el-amap-marker>
      </el-amap>
    </div>
  </div>
</template>
<script>
//引入 获取实例
import { AMapManager } from "vue-amap";
let amapManager = new AMapManager();
let Geocoder; //先声明变量,
export default {
  data() {
    let self = this;
    return {
      amapManager,
      zoom: 12,
      input: "",
      markers: [],
      searchOption: {
        city: "杭州",
        citylimit: false,
      },
      center: [120.19, 30.26],
      events: {
        init: (o) => {
          o.getCity((result) => {
            console.log(result);
          });
        },
        moveend: () => {},
        zoomchange: () => {},
        click: (e) => {
          self.center = [e.lnglat.lng, e.lnglat.lat];
          Geocoder.getAddress(self.center, function (status, result) { //根据坐标获取位置
            if (status === "complete" && result.info === "OK") {
              self.input = result.regeocode.formattedAddress;
              self.$refs.searchBox.keyword = self.input;
            } 
          });
        },
      },
      plugin: [
        {
          pName: "Geocoder", //使用AMap.Geocoder插件
          events: {
            init(o) {
               Geocoder = o; // o 则是AMap.Geocoder的实例 对外部的Geocoder变量进行赋值,在任何地方就都可以使用了
               //self.center 具体坐标 (数组格式) ,function 回调函数
               o.getAddress(self.center, function (status, result) {
                      if (status === "complete" && result.info === "OK") {
                        //result.regeocode.formattedAddress就是具体位置
                        self.input = result.regeocode.formattedAddress;
                        //对搜索组件的input进行赋值
                        self.$refs.searchBox.keyword = self.input;
                      }
              });
            },
          },
        },
        {
          showMarker: true, //定位成功后在定位到的位置显示点标记,默认:true
          pName: "Geolocation", // AMap-Geolocation 定位插件
          events: {
            init(o) {
          	  //getCurrentPosition 获取当前位置的方法 
          	  //注意 虽然进页面就会调用这个方法,但是data()中center要有默认值,不然会报错
              o.getCurrentPosition((status, result) => {
                if (result && result.position) {
                  let lng = result.position.lng;
                  let lat = result.position.lat;
                  self.center = [lng, lat];
                  self.loaded = true;
                  self.zoom = 14;
                  self.$nextTick();
                }
              });
            },
          },
        },
      ],
    };
  },
  methods: {
  	//点击搜索后触发的事件
    onSearchResult(pois) {
     if (pois.length > 0) {
        this.$nextTick(() => {
          this.$refs.searchBox.keyword = pois[0].name;
        });
      }
      //这边类似模糊查询 会返回一个数组,我就直接取第一个值了。
      this.center = [pois[0].lng, pois[0].lat];
    },
  },
};
</script>
<style scoped>
.amap-page-container {
  width: 100%;
  height: 400px;
  margin-bottom: 20px;
}
</style>
<style>
.el-vue-search-box-container {
  width: 100% !important;
  margin-bottom: 10px;
}
</style>

最后 使用插件千万不要忘记在main.js引入哦~
在这里插入图片描述
写的很清晰了 有不明白的可以留言交流哈,最好看文档,文档真的很详细,出错率比较小~

在这里插入图片描述

  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 49
    评论
vue-amap是一个Vue插件,可以在Vue框架中使用高德地图实现地图搜索和地址定位功能。通过引入"vue-amap"插件,可以在Vue项目中使用高德地图的API来实现相关功能。 具体实现步骤如下: 1. 首先,在Vue项目中安装"vue-amap"插件,可以通过运行命令npm install vue-amap来安装。 2. 在需要使用地图的组件中,引入并注册"vue-amap"插件。可以在组件中使用Vue.use()方法来注册插件,并配置高德地图的API密钥和插件所需的其他参数。 3. 在组件模板中,使用"vue-amap"插件提供的组件来显示地图。可以使用<el-amap>标签来展示地图,并设置其相关属性,如中心点、缩放级别等。 4. 实现地图搜索功能,可以使用"vue-amap"插件提供的<el-amap-search>组件。通过监听用户输入的地址,在搜索框中输入地址后,通过调用插件提供的搜索方法,即可在地图上显示搜索结果的位置。 5. 实现点击定位功能,可以通过监听地图的点击事件,在用户点击地图后获取点击的位置坐标,并在地图上展示标记点。同时,可以通过控制标记点的显示和隐藏,实现上一个标记点消失的效果。 总结起来,通过使用vue-amap插件,可以在Vue框架中轻松实现地图搜索和地址定位功能。通过搜索框输入地址进行搜索,并在地图上显示搜索结果的位置,同时可以通过点击地图实现定位,并在地图上展示标记点。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue使用vue-amap插件(高德地图插件实现定位搜索marker标记点)](https://blog.csdn.net/ccyolo/article/details/115916371)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [vue+高德地图实现地图搜索及点击定位操作](https://download.csdn.net/download/weixin_38624519/12923390)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [“vue-amap“: “^0.5.10“, 高德地图 vue版本 H5地图 实现根据地名搜索坐标,经纬度](https://blog.csdn.net/Li_Ning21/article/details/121986013)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 49
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值