高德地图API使用教程

开发前准备

获取key值和相关安全密钥

  • 进入高德开放平台
    https://lbs.amap.com/
    在这里插入图片描述
  • 登录后,打开我的应用(无账号要先注册)
    在这里插入图片描述
  • 打开我的应用,创建新应用,填入创建的名称和选择应用类型
    在这里插入图片描述
    在这里插入图片描述
  • 按需填入自己的名称及服务平台,域名白名单可不填
    在这里插入图片描述
    在这里插入图片描述
  • 这就获取到了key值和相关安全密钥
    在这里插入图片描述
  • 回到首页后,点击开发支持,可查看教程
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

简单使用

 window._AMapSecurityConfig = {
    securityJsCode: "e7949ee6421d41dcb86f0be390297524"
  };
  AMapLoader.load({
    key: "申请好的Web端开发者Key,首次调用 load 时必填", // 
    version: "2.0" // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
  })
    .then(AMap => {
    })

需求开发

h5范围打卡-vue3

在这里插入图片描述

<script setup lang="ts" name="informationList">
import { showToast } from "vant";
import { ref, onMounted } from "vue";
import AMapLoader from "@amap/amap-jsapi-loader";

let circle = ref(null); //圆形存放
let btnStatus = ref<boolean>(false); // 活动签到按钮状态
const ClockLngLat = ["传入的经度", "传入的维度"];
let marker = ref(null); // 标点
let locationLngLat = ref([]); //自己当前定位


onMounted(() => {
  // 获取位置坐标
  drawCircle();
});
// 初始化打卡点
const drawCircle = () => {
  window._AMapSecurityConfig = {
    securityJsCode: "e7949ee6421d41dcb86f0be390297524" //申请的密钥,现在的版本必须加密钥咯~
  };
  AMapLoader.load({
    key: "83146d89a638bd73dd676e6771dd2139", // 申请好的Web端开发者Key,首次调用 load 时必填
    version: "1.4.15", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
    // resizeEnable: true,
    plugins: [
      "AMap.Geolocation", //定位
      "AMap.Circle", //圆形
      "AMap.Marker", //标记点
      "AMap.GeometryUtil" //通用的函数库
    ] // 需要使用的的插件列表
  }).then(AMap => {
    //设置地图容器id
    const map = new AMap.Map("serviceSiteMap", {
      viewMode: "3D", //是否为3D地图模式
      zoom: 16, //初始化地图级别
      center: ClockLngLat //初始化地图中心点位置
    });
    //判断地图是否有圆形
    if (circle) {
      //清除地图所有圆形跟标记点
      map.remove(circle);
      map.remove(marker);
    }
    //绘制圆形
    circle = new AMap.Circle({
      center: ClockLngLat, // 圆心位置
      radius: 200, // 圆半径 米
      fillColor: "rgba(103,182,255)", //圆形填充颜色
      fillOpacity: 0.3, //透明度
      strokeColor: "#5898ff", //描边颜色
      strokeWeight: 1 // 描边宽度
    });
    //地图添加圆形
    map.add(circle);
    // 获取位置坐标
    const geolocation = new AMap.Geolocation({
      enableHighAccuracy: true, // 是否使用高精度定位,默认:true
      timeout: 5000 // 设置定位超时时间,默认:无穷大
    });
    geolocation.getCurrentPosition((status: string, result: any) => {
      if (status == "complete") {
        locationLngLat.value = [result.position.lng, result.position.lat];
        btnStatus.value = false;
        //本地位置点添加标记点
       const marker = new AMap.Marker({
          map: map, //要显示该marker的地图对象
          position: locationLngLat.value, // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
          icon: '//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png', //图标显示
          topWhenClick: true //鼠标点击时marker是否置顶,默认false
        });
        marker.setMap(map); //将点添加至图片
      } else {
        btnStatus.value = true;
        showToast("请确定是否已打开定位权限"); //注意!谷歌目前定位不行!!!!
      }
    });
  });
};
// 打卡事件
const isClockAdd = () => {
  AMapLoader.load({}).then(AMap => {
    // contains 判断 p 是否在 this.circle圆形 里面
    const isPoint = circle.contains(locationLngLat.value);
    const circleCen = circle.getCenter();
    if (isPoint) {
        //打卡成功后的逻辑
    } else {
      //AMap.GeometryUtil.distance 计算两点之间的距离   减去  圆形半径 500米
      var distance =
        Math.round(AMap.GeometryUtil.distance(locationLngLat.value, circleCen)) - 500;
      showToast("打卡失败,您距离打卡地点还有" + distance + "米");
    }
  });
};
</script>

<template>
  <div class="mapCheck">
    <van-nav-bar title="活动打卡" left-text="返回" left-arrow @click-left="router.go(-1)" />
    <div id="serviceSiteMap"></div>
    <van-button type="primary" class="btnMap" @click="isClockAdd" :disabled="btnStatus">{{ route?.params?.status=='1'? "活动签到":'活动签退' }}</van-button>
  </div>
</template>


<style scoped lang="less">
.mapCheck {
  overflow: hidden;
  #serviceSiteMap {
    padding: 0px;
    margin: 0px;
    width: 100%;
    height: 88vh;
  }
  .btnMap {
    width: 80%;
    height: 8vw;
    background: #057fdd;
    color: #fff;
    font-size: 15px;
    margin: auto;
    position: fixed;
    left: 10%;
    bottom: 60px;
    border-radius: 6px;
    z-index: 999999;
    opacity: 1;
  }
}
</style>

地图选点-vue3

在这里插入图片描述

  <div id="container"></div>
 ..
 const getMap = () => {
  window._AMapSecurityConfig = {
    securityJsCode: "e7949ee6421d41dcb86f0be390297524"
  };
  AMapLoader.load({
    key: "83146d89a638bd73dd676e6771dd2139", // 申请好的Web端开发者Key,首次调用 load 时必填
    version: "2.0" // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
  })
    .then(AMap => {
      const map = new AMap.Map("container", {
        //设置地图容器id
        viewMode: "3D", //是否为3D地图模式
        zoom: 12, //初始化地图级别
        resizeEnable: true,
        center: [104.055467, 30.542967]
        // merchantDetails.value?.serviceSites[0].longitude,
        // merchantDetails.value?.serviceSites[0].dimension
        // ] //初始化地图中心点位置
      });
      map.on("click", function (e) {
        map.clearMap();
        regeoCode([e.lnglat.getLng(), e.lnglat.getLat()], AMap, map);
      });
    })
    .catch(e => {
      console.log(e);
    });
  //为地图注册click事件获取鼠标点击出的经纬度坐标
};
const regeoCode = (position: any, AMap, map) => {
  AMap.plugin("AMap.Geocoder", () => {
    const geocoder = new AMap.Geocoder({
      city: "010", //城市设为北京,默认:“全国”
      radius: 1000 //范围,默认:500
    });
    geocoder.getAddress(position, function (status, result) {
      if (status === "complete" && result.regeocode) {
        var address = result.regeocode.formattedAddress;
        const name = new AMap.Marker({
          // icon: "//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png",
          position: position,
          content: `<div style="
             background-color: #2589ff;
             width: 150px;
             padding: 3px;
             border-radius: 5px;
             color: #fff;
             font-size: 14px;
             font-weight: 900;">${address}</div>`,
          offset: new AMap.Pixel(-40, 5)
        });
        const marker = new AMap.Marker({
          icon:
            "//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png",
          position: position,
          offset: new AMap.Pixel(-26, -54)
        });
        name.setMap(map);
        marker.setMap(map);
        activityAddress.value = address;
        longitude.value=position[0]
        dimension.value=position[1]

        // document.getElementById('address').value = address;
      } else {
        console.log("根据经纬度查询地址失败");
      }
    });
  });
};
 
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
高德地图API是一款功能强大的地图服务,它提供了多种功能和接口供开发者使用。使用高德地图API需要经过以下几个步骤: 1. 首先,你需要申请一个高德地图开发者账号,并创建一个应用。你可以访问高德地图开放平台的官方网站,在那里你可以找到相关的注册和创建应用的步骤。 2. 在创建应用后,你会得到一个API Key,这是你使用高德地图API的权限凭证。在使用API时,你需要在请求中携带这个API Key。 3. 接下来,你可以根据你的需求选择合适的API接口进行开发。高德地图API提供了地图显示、地理编码、逆地理编码、路径规划、导航等一系列功能的接口。 4. 根据你选择的接口,你需要按照API文档中的要求构造API请求,并将API Key携带在请求中。 5. 发送请求后,你会收到API的响应数据。根据响应数据的格式和内容,你可以进行相应的处理和展示。 以下是一些常用的高德地图API接口和功能: - 地理编码:将地址转换为经纬度坐标,可以使用 Geocoding API 实现。 - 逆地理编码:将经纬度坐标转换为具体地址,可以使用 Regeocoding API 实现。 - 路径规划:根据起点和终点计算出最优路径,可以使用 Directions API 实现。 - 导航:提供步行、驾车、骑行等导航功能,可以使用 Navigation API 实现。 - 地图显示:在网页或移动应用中显示地图,可以使用 JavaScript API 或 Android/iOS SDK 实现。 希望以上信息能帮助你初步了解如何使用高德地图API。如果你有其他相关问题,请随时提问。 相关问题: 1. 高德地图API有哪些常用的功能? 2. 如何在网页中使用高德地图? 3. 高德地图API的请求参数有哪些?

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值