返回列表 发帖

微信小程序地图 map

基础库 1.0.0 开始支持,低版本需做兼容处理。
地图(v2.7.0 起支持同层渲染)。相关api wx.createMapContext。

个性化地图能力可在小程序后台“开发-开发者工具-腾讯位置服务”申请开通。 小程序内地图组件应使用同一 subkey,可通过 layer-style(地图官网设置的样式 style 编号)属性选择不同的底图风格。 组件属性的长度单位默认为px,2.4.0起支持传入单位(rpx/px)。

示例小程序


属性        类型        默认值        必填        说明        最低版本
longitude        number                是        中心经度        1.0.0
latitude        number                是        中心纬度        1.0.0
scale        number        16        否        缩放级别,取值范围为3-20        1.0.0
markers        Array.<marker>                否        标记点        1.0.0
covers        Array.<cover>                否        即将移除,请使用 markers        1.0.0
polyline        Array.<polyline>                否        路线        1.0.0
circles        Array.<circle>                否        圆        1.0.0
controls        Array.<control>                否        控件(即将废弃,建议使用 cover-view 代替)        1.0.0
include-points        Array.<point>                否        缩放视野以包含所有给定的坐标点        1.0.0
show-location        boolean        false        否        显示带有方向的当前定位点        1.0.0
polygons        Array.<polygon>                否        多边形        2.3.0
subkey        string                否        个性化地图使用的key        2.3.0
layer-style        number        1        否        个性化地图配置的 style,不支持动态修改       
rotate        number        0        否        旋转角度,范围 0 ~ 360, 地图正北和设备 y 轴角度的夹角        2.5.0
skew        number        0        否        倾斜角度,范围 0 ~ 40 , 关于 z 轴的倾角        2.5.0
enable-3D        boolean        false        否        展示3D楼块(工具暂不支持)        2.3.0
show-compass        boolean        false        否        显示指南针        2.3.0
show-scale        boolean        false        否        显示比例尺,工具暂不支持        2.8.0
enable-overlooking        boolean        false        否        开启俯视        2.3.0
enable-zoom        boolean        true        否        是否支持缩放        2.3.0
enable-scroll        boolean        true        否        是否支持拖动        2.3.0
enable-rotate        boolean        false        否        是否支持旋转        2.3.0
enable-satellite        boolean        false        否        是否开启卫星图        2.7.0
enable-traffic        boolean        false        否        是否开启实时路况        2.7.0
setting        object                否        配置项        2.8.2
bindtap        eventhandle                否        点击地图时触发,2.9.0起返回经纬度信息        1.0.0
bindmarkertap        eventhandle                否        点击标记点时触发,e.detail = {markerId}        1.0.0
bindlabeltap        eventhandle                否        点击label时触发,e.detail = {markerId}        2.9.0
bindcontroltap        eventhandle                否        点击控件时触发,e.detail = {controlId}        1.0.0
bindcallouttap        eventhandle                否        点击标记点对应的气泡时触发e.detail = {markerId}        1.2.0
bindupdated        eventhandle                否        在地图渲染更新完成时触发        1.6.0
bindregionchange        eventhandle                否        视野发生变化时触发,        2.3.0
bindpoitap        eventhandle                否        点击地图poi点时触发,e.detail = {name, longitude, latitude}        2.3.0
regionchange 返回值
视野改变时,regionchange 会触发两次,返回的 type 值分别为 begin / end。

2.8.0起 begin 阶段返回 causedBy,有效值为 gesture(手势触发) & update(接口触发)

2.3.0起 end 阶段返回 causedBy,有效值为 drag(拖动导致)、scale(缩放导致)、update(调用更新接口导致) rotate、skew仅在 end 阶段返回

e = {
  causedBy,
  type,
  detail: {
    rotate,
    skew
  }
}
setting
提供 setting 对象统一设置地图配置。同时对于一些动画属性如 rotate 和 skew,通过 setData 分开设置时无法同时生效,需通过 settting 统一修改。

// 默认值
const setting = {
  skew: 0,
  rotate: 0,
  showLocation: false,
  showScale: false,
  subKey: '',
  layerStyle: -1,
  enableZoom: true,
  enableScroll: true,
  enableRotate: false,
  showCompass: false,
  enable3D: false,
  enableOverlooking: false,
  enableSatellite: false,
  enableTraffic: false,
}

this.setData({
  // 仅设置的属性会生效,其它的不受影响
  setting: {
    enable3D: true,
    enableTraffic: true
  }
})
marker
标记点用于在地图上显示标记的位置

属性        说明        类型        必填        备注        最低版本
id        标记点 id        number        否        marker 点击事件回调会返回此 id。建议为每个 marker 设置上 number 类型 id,保证更新 marker 时有更好的性能。       
latitude        纬度        number        是        浮点数,范围 -90 ~ 90       
longitude        经度        number        是        浮点数,范围 -180 ~ 180       
title        标注点名        string        否        点击时显示,callout存在时将被忽略       
zIndex        显示层级        number        否                2.3.0
iconPath        显示的图标        string        是        项目目录下的图片路径,支持网络路径、本地路径、代码包路径(2.3.0)       
rotate        旋转角度        number        否        顺时针旋转的角度,范围 0 ~ 360,默认为 0       
alpha        标注的透明度        number        否        默认 1,无透明,范围 0 ~ 1       
width        标注图标宽度        number/string        否        默认为图片实际宽度       
height        标注图标高度        number/string        否        默认为图片实际高度       
callout        自定义标记点上方的气泡窗口        Object        否        支持的属性见下表,可识别换行符。        1.2.0
label        为标记点旁边增加标签        Object        否        支持的属性见下表,可识别换行符。        1.2.0
anchor        经纬度在标注图标的锚点,默认底边中点        Object        否        {x, y},x 表示横向(0-1),y 表示竖向(0-1)。{x: .5, y: 1} 表示底边中点        1.2.0
aria-label        无障碍访问,(属性)元素的额外描述        string        否                2.5.0
marker 上的气泡 callout
属性        说明        类型        最低版本
content        文本        string        1.2.0
color        文本颜色        string        1.2.0
fontSize        文字大小        number        1.2.0
borderRadius        边框圆角        number        1.2.0
borderWidth        边框宽度        number        2.3.0
borderColor        边框颜色        string        2.3.0
bgColor        背景色        string        1.2.0
padding        文本边缘留白        number        1.2.0
display        'BYCLICK':点击显示; 'ALWAYS':常显        string        1.2.0
textAlign        文本对齐方式。有效值: left, right, center        string        1.6.0
anchorX        横向偏移量,向右为正数        number        2.11.0
anchorY        纵向偏移量,向下为正数        number        2.11.0
marker 上的气泡 label
属性        说明        类型        最低版本
content        文本        string        1.2.0
color        文本颜色        string        1.2.0
fontSize        文字大小        number        1.2.0
x        label的坐标(废弃)        number        1.2.0
y        label的坐标(废弃)        number        1.2.0
anchorX        label的坐标,原点是 marker 对应的经纬度        number        2.1.0
anchorY        label的坐标,原点是 marker 对应的经纬度        number        2.1.0
borderWidth        边框宽度        number        1.6.0
borderColor        边框颜色        string        1.6.0
borderRadius        边框圆角        number        1.6.0
bgColor        背景色        string        1.6.0
padding        文本边缘留白        number        1.6.0
textAlign        文本对齐方式。有效值: left, right, center        string        1.6.0
polyline
指定一系列坐标点,从数组第一项连线至最后一项

属性        说明        类型        必填        备注        最低版本
points        经纬度数组        array        是        [{latitude: 0, longitude: 0}]       
color        线的颜色        string        否        十六进制       
width        线的宽度        number        否               
dottedLine        是否虚线        boolean        否        默认 false       
arrowLine        带箭头的线        boolean        否        默认 false,开发者工具暂不支持该属性        1.2.0
arrowIconPath        更换箭头图标        string        否        在 arrowLine 为 true 时生效        1.6.0
borderColor        线的边框颜色        string        否                1.2.0
borderWidth        线的厚度        number        否                1.2.0
polygon
指定一系列坐标点,根据 points 坐标数据生成闭合多边形

属性        说明        类型        必填        备注        最低版本
points        经纬度数组        array        是        [{latitude: 0, longitude: 0}]        2.3.0
strokeWidth        描边的宽度        number        否                2.3.0
strokeColor        描边的颜色        string        否        十六进制        2.3.0
fillColor        填充颜色        string        否        十六进制       
zIndex        设置多边形Z轴数值        number        否                2.3.0
circle
在地图上显示圆

属性        说明        类型        必填        备注
latitude        纬度        number        是        浮点数,范围 -90 ~ 90
longitude        经度        number        是        浮点数,范围 -180 ~ 180
color        描边的颜色        string        否        十六进制
fillColor        填充颜色        string        否        十六进制
radius        半径        number        是       
strokeWidth        描边的宽度        number        否       
control
在地图上显示控件,控件不随着地图移动。即将废弃,请使用 cover-view

属性        说明        类型        必填        备注
id        控件id        number        否        在控件点击事件回调会返回此id
position        控件在地图的位置        object        是        控件相对地图位置
iconPath        显示的图标        string        是        项目目录下的图片路径,支持本地路径、代码包路径
clickable        是否可点击        boolean        否        默认不可点击
position
属性        说明        类型        必填        备注
left        距离地图的左边界多远        number        否        默认为0
top        距离地图的上边界多远        number        否        默认为0
width        控件宽度        number        否        默认为图片宽度
height        控件高度        number        否        默认为图片高度
bindregionchange 返回值
属性        说明        类型        备注
type        视野变化开始、结束时触发        string        视野变化开始为begin,结束为end
causedBy        导致视野变化的原因        string        拖动地图导致(drag)、缩放导致(scale)、调用接口导致(update)
Bug & Tip
tip:个性化地图暂不支持工具中调试。请先使用微信客户端进行测试。
tip:地图中的颜色值color/borderColor/bgColor等需使用6位(8位)十六进制表示,8位时后两位表示alpha值,如:#000000AA
tip:地图组件的经纬度必填, 如果不填经纬度则默认值是北京的经纬度。
tip: map 组件使用的经纬度是火星坐标系,调用 wx.getLocation 接口需要指定 type 为 gcj02
tip:从 2.8.0 起 map 支持同层渲染,更多请参考原生组件使用限制
tip:请注意原生组件使用限制。
比例尺
scale        3        4        5        6        7        8        9        10        11
比例        1000km        500km        200km        100km        50km        50km        20km        10km        5km
scale        12        13        14        15        16        17        18        19        20
比例        2km        1km        500m        200m        100m        50m        50m        20m        10m
示例代码
在开发者工具中预览效果

<!-- map.wxml -->
<map id="map" longitude="113.324520" latitude="23.099994" scale="14" controls="{{controls}}" bindcontroltap="controltap" markers="{{markers}}" bindmarkertap="markertap" polyline="{{polyline}}" bindregionchange="regionchange" show-location style="width: 100%; height: 300px;"></map>
// map.js
Page({
  data: {
    markers: [{
      iconPath: "/resources/others.png",
      id: 0,
      latitude: 23.099994,
      longitude: 113.324520,
      width: 50,
      height: 50
    }],
    polyline: [{
      points: [{
        longitude: 113.3245211,
        latitude: 23.10229
      }, {
        longitude: 113.324520,
        latitude: 23.21229
      }],
      color:"#FF0000DD",
      width: 2,
      dottedLine: true
    }],
    controls: [{
      id: 1,
      iconPath: '/resources/location.png',
      position: {
        left: 0,
        top: 300 - 50,
        width: 50,
        height: 50
      },
      clickable: true
    }]
  },
  regionchange(e) {
    console.log(e.type)
  },
  markertap(e) {
    console.log(e.detail.markerId)
  },
  controltap(e) {
    console.log(e.detail.controlId)
  }
})

返回列表