vue 集成高德地图

准备工作

高德地图官网:https://lbs.amap.com/

高德地图JS API 2.0 教程:https://lbs.amap.com/api/jsapi-v2/summary

高德地图JS API 2.0 参考手册:https://lbs.amap.com/api/jsapi-v2/documentation

高德地图JS API 2.0 示例:https://lbs.amap.com/demo/list/jsapi-v2

1. 首先,注册开发者账号https://console.amap.com/dev/index),成为高德开放平台开发者;

2. 登录之后,再进入「应用管理」 页面「创建新应用」;

3. 为应用添加 Key,「服务平台」一项请选择「 Web 端 ( JSAPI ) 」;

4. 添加成功后,获取到 Key 值和安全密钥。

具体准备工作和注意事项查看上方 高德地图JS API 2.0 教程

地图组件开发和使用

获取高德地图 API,可通过JavaScript 脚本的方式加载官网提供的 JSAPI Loader 为了更好的契合 Vue 使用推荐第二种方式。

本文采用第二种方式,官网详情见:JSAPI结合Vue使用

  1. 按 NPM 方式安装使用 Loader ;

npm i @amap/amap-jsapi-loader --save
  1. 在项目中新建 MapContainer.vue 文件,用作地图组件;

  1. 在 MapContainer.vue 地图组件中创建 div 标签作为地图容器 ,并设置地图容器的 id 属性为 container;

<template>
  <div id="container"></div>
</template>
  1. 设置地图容器样式;

<style  scoped>
  #container{
    padding:0px;
    margin: 0px;
    width: 100%;
    height: 800px;
  }
</style>
  1. 在地图组件 MapContainer.vue 中引入 amap-jsapi-loader ;

import AMapLoader from '@amap/amap-jsapi-loader';
  1. 定义 map 对象;

  • vue 2

data(){
  return{
    //此处不声明 map 对象,可以直接使用 this.map赋值或者采用非响应式的普通对象来存储。
    map:null,
  } 
},
  • vue3

import { shallowRef } from '@vue/reactivity'

setup(){
  const map = shallowRef(null);
  return{
    map,
  }
},
  1. 设置安全密钥,这里采用明文方式设置,也可以 通过代理服务器转发 ,详情见:JS API 安全密钥使用

// 写在初始化 map 方法之前即可
window._AMapSecurityConfig = {
  securityJsCode:'「您申请的安全密钥」',
}
  1. 初始化 map;

mounted(){
  //DOM初始化完成进行地图初始化
  this.initMap();
},

methods:{
  initMap(){
    AMapLoader.load({
      key:"",             // 申请好的Web端开发者Key,首次调用 load 时必填
      version:"2.0",      // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
      plugins:[''],       // 需要使用的的插件列表,如比例尺'AMap.Scale'等
    }).then((AMap)=>{
      this.map = new AMap.Map("container",{  //设置地图容器id
        viewMode:"3D",    //是否为3D地图模式
        zoom:5,           //初始化地图级别
        center:[105.602725,37.076636], //初始化地图中心点位置
      });
    }).catch(e=>{
      console.log(e);
    })
  },
},

地图常用功能开发示例

  • 添加卫星地图图层
// 设置图层( 0: 矢量地图  1:卫星地图 )
setMapLayer (mapOption) {
  if (this.layer) this.map.remove(this.layer)    // 移除原有图层
  if (mapOption == 1) {
    this.layer = new AMap.TileLayer.Satellite()   // 新建卫星图层
  } else {
    this.layer = new AMap.createDefaultLayer();   // 新建默认标准图层
  }
  this.map.add(this.layer)    // 添加图层
},
  • 自定义内容点标记(marker)
// 添加点标记
addMarker () {
  for (const key in this.siteInfofilter) {
    let siteInfo = this.siteInfofilter[key]
    let markerContent = '' +
      '<div class="gis_box">' +
      `   <img class="gis_icon" src="${siteInfo.icon}" alt="">` +
      `   <div class='gis_name'>${siteInfo.name}</div>` +
      '</div>';

    let position = new AMap.LngLat(siteInfo.lng, siteInfo.lat); // Marker经纬度
    let marker = new AMap.Marker({
      position: position,
      content: markerContent, // 将 html 传给 content
      offset: new AMap.Pixel(-70, -46) // 以 icon 的 [center bottom] 为原点
    });
    this.map.add(marker);
  }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现vue集成高德地图实现考勤打卡,首先需要在vue项目中引入高德地图API。接下来,我们可以使用高德地图地图组件来展示地图,并将地图与用户信息进行关联。 首先,我们需要在项目中安装高德地图JavaScript API,并在项目中引入相关的库文件。 在vue的组件中,我们可以通过创建地图容器元素来展示地图,然后使用高德地图的Map类来初始化地图。可以设置地图的中心点、缩放级别、控件等属性。 为了实现考勤打卡功能,我们需要在地图上添加打卡点。可以使用标记(Marker)来表示打卡点,并给每个打卡点添加点击事件。 当用户点击地图上的打卡点时,可以弹出打卡窗口,显示用户的相关信息,例如姓名、工号等。可以通过自定义窗体(InfoWindow)来实现。 另外,为了保证用户只能在指定的区域进行打卡,可以使用高德地图的多边形(Polygon)工具来标记可打卡区域。在每次打卡时,可以使用高德地图的点位检索(PlaceSearch)功能来判断用户当前位置是否在可打卡区域内。 当用户点击打卡按钮时,可以触发相关的逻辑代码,例如获取用户位置信息、判断用户位置是否在可打卡区域内等。根据打卡结果,可以将相关信息保存到数据库中,并给用户显示打卡成功或失败的提示。 总结起来,通过vue集成高德地图实现考勤打卡,我们可以使用高德地图的API来展示地图、添加打卡点、设置打卡区域等功能。通过与用户信息和数据库的交互,可以实现考勤打卡的功能需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值