更新记录

1.1.2(2024-09-17) 下载此版本

性能优化。

1.1.1(2024-09-17) 下载此版本

1.1.0(2024-09-17)

1.高德地图插件更新到2.0版本;

2.新增地图比例尺控件、地图缩放控件和自动定位控件;

3.新增点击地图标注显示信息窗体的功能;

3.移除地图自动显示错误信息弹窗的功能,错误信息改为在error事件里传出;

4.其他性能方面的优化。

1.1.0(2024-09-17) 下载此版本

#

查看更多

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.1.0 app-vue × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
×

组件功能

在高德地图上显示数据的标注marker和用户当前位置的标注marker。

文档

属性说明

属性名 类型 默认值 说明
markers Array [] 地图标注列表,下面有详细说明
geo Object null 用户自动定位标注不,默认不开启自动定位功能,下面有详细说明
infowindowContent Object null 地图标注自定义信息窗体(1.1.0版本新增),下面有详细说明
mapId String 'location' + Date.now() 地图容器id
mapWidth String, Number 100% 地图容器宽度
mapHeight String, Number 100% 地图容器高度
scale Object null 地图比例尺控件(1.1.0版本新增),参考AMap.Scale,默认不显示
toolBar Object null 地图缩放控件(1.1.0版本新增),参考AMap.ToolBar,默认不显示
geoIcon String 默认图标 自动定位图标(1.1.0版本新增),只支持绝对路径,不支持相对路径,若不想显示自动定位图标则传空值即可
useJscode Boolean true 是否启用高德安全密钥jscode,默认启用
serviceHost String '' 代理服务器域名或地址,useJscode为true时生效
amapKey String 申请的高德地图Web端的key值,必传
@current-positon EventHandle 用户当前位置自动定位成功时触发,参数是一个GeolocationResult 对象
@open-info-window EventHandle 点击地图标注时触发,参数是一个地图标注对应的数据源的下标(1.1.0版本新增)
@error EventHandle 地图参数错误或定位发生错误时触发,参数是错误信息字符串(1.1.0版本新增)
  • geo、mapId、scale、toolBar、useJscode、serviceHost和amapKey是地图初始化参数,在地图初始化前传入才会生效,在地图初始化后改变参数值不但不会生效,还可能会导致地图显示错误,因此这些参数应当在此子组件创建时传入。
  • 因为地图显示需要依赖地图容器DOM渲染,所以为确保地图可以正常显示,请在地图容器DOM渲染后再加载数据,例如在onReady(uni-app)、onMounted(vue3)或mounted(vue2)生命周期函数内调用数据加载方法。

markers 数组元素属性说明

markers 的每个元素必须是一个对象且有下列属性:

属性名 类型 默认值 说明
lng String, Number 经度
lat String, Number 纬度
icon String 高德默认marker图标 标注的图标url,可以线上url, 也可以是本地url;当是本地url时,要注意区分H5端和APP端的写法:以static文件夹为例,H5端以“/static”开头,而APP端则以“static”开头
width Number 图标原始宽度 图标宽度,单位:px
height Number 图标原始高度 图标高度,单位:px
anchor String center 图标锚点位置,可选值:'top-left'/'top-center'/'top-right'/'middle-left'/'center'/'middle-right'/'bottom-left'/'bottom-center'/'bottom-right'
  • markers的赋值变化时会自动更新视图显示。

geo 对象属性说明

属性名 类型 默认值 说明
icon String 高德默认定位图标 定位图标url,可以线上url, 也可以是本地url;当是本地url时,要注意区分H5端和APP端的写法:以static文件夹为例,H5端以“/static”开头,而APP端则以“static”开头
width Number 定位图标原始宽度 定位图标宽度,单位:px
height Number 定位图标原始高度 定位图标高度,单位:px
anchor String center 定位图标锚点位置,可选值:'top-left'/'top-center'/'top-right'/'middle-left'/'center'/'middle-right'/'bottom-left'/'bottom-center'/'bottom-right'
  • geo不为空值时会开启自动定位功能,所以若不想开启自动定位功能则不传值即可
  • geo的width属性不为空值时会显示自动定位图标,所以若不想显示自动定位图标则width属性不传值即可

infowindowContent 对象属性说明

属性名 类型 默认值 说明
content String 信息窗体html字符串,必传
position Array 信息窗体显示位置坐标数组,例如[lng, lat],必传
  • 若infowindowContent传入空值,则地图标注点击后不会显示信息窗体

示例代码

<!-- 高德地图定位标注 Vue3 -->
<template>
  <view class="map-location">
    <lk-amap-location
      amap-key="xxx"
      service-host="http://localhost:8888/"
      :markers="list"
      :scale="mapScale"
      :toolBar="mapToolBar"
      :infowindowContent="infowindow"
      @current-positon="getPosition"
      @open-info-window="openInfoWindow"
      @error="handleError"
    ></lk-amap-location>
  </view>
</template>

<script setup>
  import { ref } from 'vue'
  import { onReady } from '@dcloudio/uni-app'

  /* 数据查询 */
  const list = ref([])

  const loadData = () => {
    list.value = Array.from({length: 10}, () => ({
      lng: (Math.random() * (135.083 - 73.55 + 1) + 73.55).toFixed(6), // 随机经度,
      lat: (Math.random() * (53.55 - 3.85 + 1) + 3.85).toFixed(6), // 随机纬度,
      width: 30,
      height: 30,
      anchor: 'bottom-center'
    }))
  }

  onReady(() => loadData())

  /* 获取自动定位信息 */
  const geo = {
    // #ifdef APP-PLUS
    icon: 'static/img/map/position.png',
    // #endif
    // #ifdef H5
    icon: '/static/img/map/position.png',
    // #endif
    width: 20,
    height: 20
  }
  const location = ref({})

  const getPosition = info => location.value = info

  /* 显示地图比例尺控件 */
  const mapScale = ref({})

  /* 显示地图缩放控件 */
  const mapToolBar = ref({})

  /* 打开信息窗体 */
  const infowindow = ref(null)

  const openInfoWindow = index => infowindow.value = `<div class="vehicle_maker_info">编号:${index + 1}</div>`

  /* 获取错误信息 */
  const handleError = err => console.error(err)
</script>

<style lang="scss">
  .map-location {
    height: 100%;
  }
</style>
<!-- 高德地图定位标注 Vue2 -->
<template>
  <view class="mapbox-location">
    <lk-mapbox-location
      amap-key="xxx"
      :markers="info"
      :popup="popup"
      marker-icon="base64编码"
      :scale="mapScale"
      :toolBar="mapToolBar"
      :infowindowContent="infowindow"
      @current-positon="getPosition"
      @open-info-window="openInfoWindow"
      @error="handleError"
    ></lk-mapbox-location>
  </view>
</template>

<script>
  export default {
    data() {
      return {
        info: [],
        location: null,
        mapScale: {}, // 显示地图比例尺控件
        mapToolBar: {}, // 显示地图缩放控件
        infowindow: null,
      }
    },
    onReady() {
      this.loadData()
    },
    methods: {
      // 数据查询
      loadData() {
        this.info = Array.from({length: 10}, () => ({
          lng: (Math.random() * (134.083 - 74.55 + 1) + 74.55).toFixed(6), // 随机经度
          lat: (Math.random() * (52.55 - 4.85 + 1) + 4.85).toFixed(6), // 随机纬度
          width: 30,
          height: 30,
          anchor: 'center'
        }))
      },
      // 获取自动定位信息
      getPosition(value) {
        this.location = value
      },
      // 打开信息窗体
      openInfoWindow(index) {
        this.infowindow = `<div class="vehicle_maker_info">编号:${index + 1}</div>`
      },
      // 获取错误信息
      handleError(err) {
        console.error(err)
      }
    }
  }
</script>

<style lang="scss">
  page,
  .mapbox-location {
    height: 100%;
  }
</style>

在线演示

在线演示地址

其他

组件难免有不足之处,欢迎各位老铁们批评指正,有任何问题都可以在评论区中留言。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

定位权限

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无。

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问