Skip to content

map ​

地图组件。

地图组件用于展示地图,而定位API只是获取坐标,请勿混淆两者。

平台差异说明

H5微信小程序小红书小程序抖音小程序、飞书小程序快手小程序
√√√1.63+√

地图服务商说明

地图服务商H5微信小程序
高德3.6.0+
Goolge3.2.10+
腾讯√√

属性说明

属性名类型默认值说明平台差异说明
longitudeNumber中心经度
latitudeNumber中心纬度
scaleNumber16缩放级别,取值范围为 3-20高德地图缩放比例与微信小程序不同
min-scaleNumber3最小缩放级别微信小程序2.13+
max-scaleNumber20最大缩放级别微信小程序2.13+
layer-styleNumber/String1个性化地图微信小程序2.13+
markersArray标记点
polylineArray路线飞书小程序不支持
circlesArray圆
controlsArray控件
include-pointsArray缩放视野以包含所有给定的坐标点微信小程序、H5
enable-3DBooleanfalse是否显示 3D 楼块微信小程序2.3.0
show-compassBooleanfalse是否显示指南针微信小程序2.3.0
enable-zoomBooleantrue是否支持缩放微信小程序2.3.0
enable-scrollBooleantrue是否支持拖动微信小程序2.3.0
enable-rotateBooleanfalse是否支持旋转微信小程序2.3.0
enable-overlookingBooleanfalse是否开启俯视微信小程序2.3.0
enable-satelliteBooleanfalse是否开启卫星图微信小程序2.7.0
enable-trafficBooleanfalse是否开启实时路况微信小程序2.7.0
show-locationBoolean显示带有方向的当前定位点微信小程序、H5
polygons(支付宝为: polygon)Array. <polygon>多边形H5、微信小程序
@markertapEventHandle点击标记点时触发, e.detail = {markerId}H5、微信小程序 (H5平台需要指定 marker 对象属性 id)
@labeltapEventHandle点击label时触发, e.detail = {markerId}微信小程序 2.9.0
@callouttapEventHandle点击标记点对应的气泡时触发,e.detail = {markerId}
@controltapEventHandle点击控件时触发, e.detail = {controlId}
@regionchangeEventHandle视野发生变化时触发微信小程序、H5
@tapEventHandle点击地图时触发; 微信小程序 2.9 支持返回经纬度
@updatedEventHandle在地图渲染更新完成时触发微信小程序、H5
@anchorpointtapEventHandle点击定位标时触发, e.detail = {longitude, latitude}微信小程序2.13+
@poitapEventHandle点击地图 poi 点时触发, e.detail = {name, longitude, latitude}微信小程序2.3.0+

注意

  • <map> 组件的宽/高推荐写直接量,比如: 750rpx ,不要设置百分比值。
  • 谷歌地图使用 wgs84 坐标,其他地图使用 gcj02 坐标,用错坐标类型会显示偏移。
  • H5 端高德地图 include-points 属性仅支持 2 个坐标点,表示显示范围的西南角和东北角。

近期新增功能 ​

  1. 支持点聚合,适用于 marker 过多场景。
  2. 支持彩虹蚯蚓线,常用于路线规划场景。
  3. 覆盖物支持调整与其它地图元素的压盖关系。
  4. 支持 marker (小车)平移动画,适用于轨迹回放场景。

markers

标记点用于在地图上显示标记的位置

属性说明类型必填备注平台差异说明
id标记点idNumber是marker点击事件回调会返回此 id 。建议为每个 marker 设置上 Number 类型 id ,保证更新 marker 时有更好的性能。最大限制 9 位数
latitude纬度Number是浮点数,范围 -90 ~ 90
longitude经度Number是浮点数,范围 -180 ~ 180
title标注点名String否点击时显示, callout 存在时将被忽略微信小程序、H5
iconPath显示的图标String是项目目录下的图片路径,支持相对路径写法,以 / 开头则表示相对小程序根目录;也支持临时路径
rotate旋转角度Number否顺时针旋转的角度,范围 0 ~ 360 ,默认为 0微信小程序
alpha标注的透明度Number否默认 1 ,无透明,范围 0 ~ 1微信小程序
width标注图标宽度Number否默认为图片实际宽度微信小程序、H5
height标注图标高度Number否默认为图片实际高度微信小程序、H5
callout自定义标记点上方的气泡窗口Object否支持的属性见下表,可识别换行符。微信小程序
label为标记点旁边增加标签Object否支持的属性见下表,可识别换行符。微信小程序、H5
anchor经纬度在标注图标的锚点,默认底边中点Object否{x, y} , x 表示横向 (0-1) , y 表示竖向 (0-1) 。 {x: .5, y: 1} 表示底边中点微信小程序、H5
clusterId自定义点聚合簇效果时使用Number否微信小程序
customCallout自定义气泡窗口Object否微信小程序
aria-label无障碍访问,(属性)元素的额外描述String否微信小程序
joinCluster是否参与点聚合Boolean否如果指定点聚合 此选项值必须设置为 true ,才会生效微信小程序

marker 上的气泡 callout

属性说明类型平台差异说明
content文本String微信小程序、H5
color文本颜色String微信小程序、H5
fontSize文字大小Number微信小程序、H5
borderRadiuscallout边框圆角Number微信小程序、H5
borderWidth边框宽度Number微信小程序
borderColor边框颜色String微信小程序
bgColor背景色String微信小程序、H5
padding文本边缘留白Number微信小程序、H5
display'BYCLICK':点击显示; 'ALWAYS':常显String微信小程序、H5
textAlign文本对齐方式。有效值: left, right, centerString微信小程序
anchorX横向偏移量,向右为正数Number微信小程序 2.11.0
anchorY纵向偏移量,向下为正数Number微信小程序 2.11.0

marker 上的标签 label

属性说明类型平台差异说明
content文本String
color文本颜色String微信小程序、H5
fontSize文字大小Number微信小程序、H5
xlabel的坐标,原点是 marker 对应的经纬度NumberH5
ylabel的坐标,原点是 marker 对应的经纬度NumberH5
anchorXlabel的坐标,原点是 marker 对应的经纬度Number微信小程序
anchorYlabel的坐标,原点是 marker 对应的经纬度Number微信小程序
borderWidth边框宽度Number微信小程序
borderColor边框颜色String微信小程序
borderRadius边框圆角Number微信小程序
bgColor背景色String微信小程序
padding文本边缘留白Number微信小程序
textAlign文本对齐方式。有效值: left , right , centerString微信小程序
aria-label无障碍访问,(属性)元素的额外描述String微信小程序

点聚合 ​

当地图上需要展示的标记点 marker 过多时,可能会导致界面上 marker 出现压盖,展示不全,并导致整体性能变差。针对此类问题,推出点聚合能力。

使用流程如下:

MapContext.initMarkerCluster 对聚合点进行初始化配置(可选); MapContext.addMarkers 指定参与聚合的 marker; MapContext.on('markerClusterCreate', callback) 触发时,通过 MapContext.addMarkers 更新聚合簇的样式 (可选); MapContext.removeMarkers 移除参与聚合的 marker;

polyline

指定一系列坐标点,从数组第一项连线至最后一项

属性说明类型必填备注平台差异说明
points经纬度数组Array是[{latitude: 0, longitude: 0}]
color线的颜色String否8 位十六进制表示,后两位表示alpha值,如:#0000AA
width线的宽度Number否
dottedLine是否虚线Boolean否默认false微信小程序、H5
arrowLine带箭头的线Boolean否默认false,微信小程序开发者工具暂不支持该属性微信小程序
arrowIconPath更换箭头图标String否在 arrowLine 为 true 时生效微信小程序
borderColor线的边框颜色String否微信小程序、H5
borderWidth线的厚度Number否微信小程序、H5
colorList彩虹线Array否存在时忽略 color 值微信小程序
level压盖关系
abovelabels 显示在所有 POI 之上(默认)
abovebuildings 显示在楼块之上 POI 之下
aboveroads 显示在所有 POI 之上
String否微信小程序

polygon
指定一系列坐标点,根据 points 坐标数据生成闭合多边形

属性说明类型必填备注
points经纬度数组array是[{latitude: 0, longitude: 0}]
strokeWidth描边的宽度Number否
strokeColor描边的颜色String否十六进制
fillColor填充颜色String否十六进制
zIndex设置多边形 Z 轴数值Number否
level压盖关系
abovelabels 显示在所有 POI 之上(默认)
abovebuildings 显示在楼块之上 POI 之下
aboveroads 显示在所有 POI 之上
Stringfalse微信小程序

circles

在地图上显示圆

属性说明类型必填备注
latitude纬度Number是浮点数,范围 -90 ~ 90
longitude经度Number是浮点数,范围 -180 ~ 180
color描边的颜色String否8 位十六进制表示,后两位表示alpha值,如: #000000AA ; #00000 为十六进制
fillColor填充颜色String否8 位十六进制表示,后两位表示alpha值,如: #000000AA ; #00000 为十六进制
radius半径Number是
strokeWidth描边的宽度Number否 
level压盖关系
abovelabels 显示在所有 POI 之上(默认)
abovebuildings 显示在楼块之上 POI 之下
aboveroads 显示在所有 POI 之上
Stringfalse微信小程序

controls

在地图上显示控件,控件不随着地图移动

属性说明类型必填备注
id控件idNumber否在控件点击事件回调会返回此id
position控件在地图的位置Object是控件相对地图位置
iconPath显示的图标String是项目目录下的图片路径,支持相对路径写法,以 / 开头则表示相对项目根目录;也支持临时路径
clickable是否可点击Boolean否默认不可点击

position

属性说明类型必填备注
left距离地图的左边界多远Number否默认为0
top距离地图的上边界多远Number否默认为0
width控件宽度Number否默认为图片宽度
height控件高度Number否默认为图片高度

地图组件的经纬度必填,如果不填经纬度则默认值是北京的经纬度。

示例 查看示例

vue
<template>
  <view>
    <view class="page-body">
      <view class="page-section page-section-gap">
        <map
          style="width: 100%; height: 300px;"
          :latitude="latitude"
          :longitude="longitude"
          :markers="covers"
        />
      </view>
    </view>
  </view>
</template>
<template>
  <view>
    <view class="page-body">
      <view class="page-section page-section-gap">
        <map
          style="width: 100%; height: 300px;"
          :latitude="latitude"
          :longitude="longitude"
          :markers="covers"
        />
      </view>
    </view>
  </view>
</template>
js
<script>
export default {
  data() {
    return {
      id: 0, // 使用 marker点击事件 需要填写id
      title: 'map',
      latitude: 39.909,
      longitude: 116.39742,
      covers: [
        {
          latitude: 39.909,
          longitude: 116.39742,
          iconPath: '../../../static/location.png',
        }, {
          latitude: 39.90,
          longitude: 116.39,
          iconPath: '../../../static/location.png',
        },
      ],
    };
  },
};
</script>
<script>
export default {
  data() {
    return {
      id: 0, // 使用 marker点击事件 需要填写id
      title: 'map',
      latitude: 39.909,
      longitude: 116.39742,
      covers: [
        {
          latitude: 39.909,
          longitude: 116.39742,
          iconPath: '../../../static/location.png',
        }, {
          latitude: 39.90,
          longitude: 116.39,
          iconPath: '../../../static/location.png',
        },
      ],
    };
  },
};
</script>

三方定位和地图服务收费说明 ​

使用三方定位或者地图服务,需向服务提供商(如:高德地图、百度地图、腾讯地图、谷歌地图)申请商业授权和缴纳费用(5万/年)。

  • 腾讯地图商业授权现优惠政策:买1年送1个月,买2年送1年。如需购买,请速扫以下二维码咨询与购买!

详见