vue-map高德地图(1)输入坐标显示位置(组件封装)

本文介绍了如何在Vue项目中封装高德地图组件,通过输入坐标实现地图上的位置显示,提供了一种在父组件中使用该地图组件的方法,并展示了最终实现的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

父组件使用

<location :location='location'  :locationSize='locationSize'/>
import Location from '@/components/location'
export default{
components:['Location']
 data() {
    return {
      location:[15.11,22.11],   //位置坐标
      locationSize:'width:100%;height:200px',  //地图大小显示设置
    };
  },
}

地图组件封装

<template>
  <div>
    <div id="map-location" :style="locationSize">
    </div>
  </div>
</template>
<script>
var map, marker;
export default {
  props:['locationSize','location'],  //接收父组件传来的位置坐标和样式
  data() {
    return {
      arriveCoor: this.location, //坐标点
      arrive: "", //位置信息
    };
  },
  mounted() {
    this.mapDraw(this.arriveCoor)
    this.mapCoor(this.arriveCoor);
  },
  methods: {
    mapDraw(arriveCoor) {
      map = new AMap.Map("map-location", {
        //map-location是嵌地图div的id
        resizeEnable: true, //是否监控地图容器尺寸变化
        zoom: 16, //初始化地图层级
        center: arriveCoor, //初始化地图中心点
      });
      // 定位点
      this.addMarker(arriveCoor);
    },
    // 实例化点标记
    addMarker(arriveCoor) {
      var _this = this;
      marker = new AMap.Marker({
        icon: "", 
        imageSize: "20px",
        position: arriveCoor,
        offset: new AMap.Pixel(-13, -30),
        // 设置是否可以拖拽
        draggable: true,
        cursor: "move",
        // 设置拖拽效果
        raiseOnDrag: true,
      });
      marker.setMap(map);
    }, // 查询坐标
    mapCoor(lnglatXY) {
      var _this = this;
      AMap.service("AMap.Geocoder", function () {
        var geocoder = new AMap.Geocoder({});
        geocoder.getAddress(lnglatXY, function (status, result) {
          if (status === "complete" && result.info === "OK") {
            _this.arrive = result.regeocode.formattedAddress;
          } else {
            _this.arrive = "暂无位置";
          }
        });
      });
    },
  },
};
</script>

 效果图:

 

<< 高德地图插件 "vue-amap" 是 Vue.js 的一个封装库,用于方便地集成高德地图功能到基于 Vue 的项目中。下面是关于如何使用 `vue-amap` 实现高德地图选点功能的相关说明。 ### 一、安装依赖 首先你需要确保已正确安装了 `vue-amap` 插件: ```bash npm install vue-amap --save ``` 然后在项目的入口文件(如 main.js)引入并初始化 `vue-amap`: ```javascript import Vue from 'vue'; import AMap from 'vue-amap'; // 初始化 vue-amap Vue.use(AMap); // 高德地图 key申请地址: https://lbs.amap.com/ AMap.initAMapApiLoader({ // 高德key key: 'your_amap_key', // 插件集合 plugin: ['AMap.Geolocation', 'AMap.ToolBar', 'AMap.Scale'], }); ``` ### 二、创建选点组件 以下是一个简单的示例代码展示如何使用 `vue-amap` 创建一个包含标记和拖拽选择位置地图组件: ```html <template> <div id="app"> <!-- 地图容器 --> <el-amap vid="amapDemo" :zoom="zoom" :center="center" @click="handleMapClick"> <!-- 标记 --> <el-amap-marker v-if="markerPosition" :position="markerPosition"></el-amap-marker> </el-amap> <!-- 输出坐标信息 --> <p>当前选中的经纬度:{{ markerPosition }}</p> </div> </template> <script> export default { data() { return { zoom: 12, // 地图缩放级别 center: [121.59996, 31.197646], // 初始中心点位置 (经度, 纬度) markerPosition: null, // 当前标记的位置 }; }, methods: { handleMapClick(e) { const { lnglat } = e; // 获取点击处的地理坐标 this.markerPosition = [lnglat.lng, lnglat.lat]; // 更新标记位置 } } }; </script> <style scoped> #app { position: relative; } /* 设置地图样式 */ .el-amap { width: 100%; height: 500px; } </style> ``` 这段代码展示了如何设置初始地图视口,并监听用户对地图的点击事件,在指定位置放置标记以及显示位置的经纬度。 --- **解释** - **数据绑定**: 组件的数据模型包括地图的缩放比例 (`zoom`) 和中心点位置 (`center`);此外还有用于存放标记坐标的变量 `markerPosition`。 - **方法定义**: 方法 `handleMapClick()` 捕获鼠标点击地图时返回的具体地理坐标,并将此更新为标记的新位置- **模板结构**: 在 `<el-amap>` 中添加了一个子节点 `<el-amap-marker>` 来作为可移动或固定的定位标记。 --- #### 注意事项: 1. 替换 `"your_amap_key"` 为你自己从[高德开放平台](https://lbs.amap.com/)上获取的应用 API Key; 2. 如果需要更多的工具栏选项或其他高级交互功能,则可以通过调整插件配置参数实现更复杂的功能需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuwenjie_

感谢打赏,问题留言~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值