vue接入高德地图(web端地图、地图点标记Marker、地理编码)

3 篇文章 0 订阅
1 篇文章 0 订阅

1、接入准备工作,高德官方文档:

  • 1.1、注册开发者账号。
  • 1.2、登录之后,点击控制台进入「应用管理」 页面「创建新应用」
  • 1.3、为应用添加key,「服务平台」一项请选择「 Web 端 ( JSAPI ) 」。
  • 1.4、2.0版本添加成功后,可获取到key值安全密钥jscode

 

2、使用npm方式安装loader。

npm i @amap/amap-jsapi-loader --save

3、vue2中使用如下,vue3在高德官方文档中有示例。

  • 创建地图容器,其中id在地图初始化的时候需要使用,具体看代码与注释。
<template>
  <div id="map"></div>
</template>

<script>
//引入 amap-jsapi-loader
import AMapLoader from "@amap/amap-jsapi-loader";
//安全密钥引入
window._AMapSecurityConfig = {
  securityJsCode: "申请的key对应的密钥",
};

export default {
  data() {
    return {
      map: null, //高德实例
      marker: null, //点标记 Marker
      geocoder: null, //逆向地理
    };
  },
  mounted() {
    this.initMap();
  },
  methods: {
    //初始化
    initMap() {
      AMapLoader.load({
        key: "申请的key", // 申请好的Web端开发者Key,首次调用 load 时必填
        version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
        plugins: ["AMap.CitySearch", "AMap.Geocoder"], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
      }).then((AMap) => {
          // 实例化
          this.map = new AMap.Map("map", {//设置地图容器id
            viewMode: "3D", //是否为3D地图模式
            zoom: 16, //初始化地图级别
            center: [106.583541,29.563475], //初始化地图中心点位置
          });

          // 自动获取用户IP,返回当前城市
          let citysearch = new AMap.CitySearch();
          citysearch.getLocalCity((status, result) => {
            if (status === "complete" && result.info === "OK") {
              console.log(result);
            }
          });

          // 地图点击事件--点标记标注
          this.map.on("click", this.handleClick);

          // 逆向地理编码插件
          this.geocoder = new AMap.Geocoder({
            // city: "010", //城市设为北京,默认:“全国”
            radius: 1000, //范围,默认:500
          });
        })
        .catch((e) => {
          console.log(e);
        });
    },
    // 地图点击之后更新点标记
    handleClick(e) {
      let longitude = e.lnglat.getLng(); //经度
      let latitude = e.lnglat.getLat(); //纬度
      // 逆向地理编码
      this.geocoder.getAddress([longitude, latitude], (status, result) => {
        if (status === "complete" && result.info == "OK") {
          let address = result.regeocode.formattedAddress;
          // 更新点标记
          this.updateMap(address, [longitude, latitude]);
        } else {
          console.log("定位失败,请稍后重试");
        }
      });
    },
    // 更新点标记
    updateMap(address, lnglat) {
      // 移除已创建的 marker
      if (this.marker) this.map.remove(this.marker);
      // 同时设置地图中心点和缩放级别
      this.map.setZoomAndCenter(16, lnglat);
      // 自定义标记点
      this.marker = new AMap.Marker({
        position: lnglat,
        icon: "http://vdata.amap.com/icons/b18/1/2.png",
        anchor: "top-center",
        offset: new AMap.Pixel(-10, -10),
      });
      // 添加到实例
      this.marker.setMap(this.map);
      // 设置label标签,label默认蓝框白底左上角显示,样式className为:amap-marker-label
      this.marker.setLabel({
        direction: "top-center",
        offset: new AMap.Pixel(10, 0), //设置文本标注偏移量
        content:"<div style='width:250px;'>" + address + "</div>", //设置文本标注内容
      });
    },
  },
}
</script>

<style lang="scss">
#map {
  width: 600px;
  height: 300px;
}
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值