微信小程序地圖 map

2022-05-11 16:13 更新
基礎(chǔ)庫(kù) 1.0.0 開(kāi)始支持,低版本需做兼容處理。

地圖(v2.7.0 起支持同層渲染)。相關(guān)api wx.createMapContext

個(gè)性化地圖能力可在小程序后臺(tái)“開(kāi)發(fā)-開(kāi)發(fā)者工具-騰訊位置服務(wù)”申請(qǐng)開(kāi)通。 小程序內(nèi)地圖組件應(yīng)使用同一 subkey,可通過(guò) layer-style(地圖官網(wǎng)設(shè)置的樣式 style 編號(hào))屬性選擇不同的底圖風(fēng)格。 組件屬性的長(zhǎng)度單位默認(rèn)為px,2.4.0起支持傳入單位(rpx/px)。

示例小程序

屬性 類型 默認(rèn)值 必填 說(shuō)明 最低版本
longitude number 中心經(jīng)度 1.0.0
latitude number 中心緯度 1.0.0
scale number 16 縮放級(jí)別,取值范圍為3-20 1.0.0
markers Array.<marker> 標(biāo)記點(diǎn) 1.0.0
covers Array.<cover> 即將移除,請(qǐng)使用 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> 縮放視野以包含所有給定的坐標(biāo)點(diǎn) 1.0.0
show-location boolean false 顯示帶有方向的當(dāng)前定位點(diǎn) 1.0.0
polygons Array.<polygon> 多邊形 2.3.0
subkey string 個(gè)性化地圖使用的key 2.3.0
layer-style number 1 個(gè)性化地圖配置的 style,不支持動(dòng)態(tài)修改
rotate number 0 旋轉(zhuǎn)角度,范圍 0 ~ 360, 地圖正北和設(shè)備 y 軸角度的夾角 2.5.0
skew number 0 傾斜角度,范圍 0 ~ 40 , 關(guān)于 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 開(kāi)啟俯視 2.3.0
enable-zoom boolean true 是否支持縮放 2.3.0
enable-scroll boolean true 是否支持拖動(dòng) 2.3.0
enable-rotate boolean false 是否支持旋轉(zhuǎn) 2.3.0
enable-satellite boolean false 是否開(kāi)啟衛(wèi)星圖 2.7.0
enable-traffic boolean false 是否開(kāi)啟實(shí)時(shí)路況 2.7.0
setting object 配置項(xiàng) 2.8.2
bindtap eventhandle 點(diǎn)擊地圖時(shí)觸發(fā),2.9.0起返回經(jīng)緯度信息 1.0.0
bindmarkertap eventhandle 點(diǎn)擊標(biāo)記點(diǎn)時(shí)觸發(fā),e.detail = {markerId} 1.0.0
bindlabeltap eventhandle 點(diǎn)擊label時(shí)觸發(fā),e.detail = {markerId} 2.9.0
bindcontroltap eventhandle 點(diǎn)擊控件時(shí)觸發(fā),e.detail = {controlId} 1.0.0
bindcallouttap eventhandle 點(diǎn)擊標(biāo)記點(diǎn)對(duì)應(yīng)的氣泡時(shí)觸發(fā)e.detail = {markerId} 1.2.0
bindupdated eventhandle 在地圖渲染更新完成時(shí)觸發(fā) 1.6.0
bindregionchange eventhandle 視野發(fā)生變化時(shí)觸發(fā), 2.3.0
bindpoitap eventhandle 點(diǎn)擊地圖poi點(diǎn)時(shí)觸發(fā),e.detail = {name, longitude, latitude} 2.3.0

regionchange 返回值

視野改變時(shí),regionchange 會(huì)觸發(fā)兩次,返回的 type 值分別為 begin / end。

2.8.0起 begin 階段返回 causedBy,有效值為 gesture(手勢(shì)觸發(fā)) & update(接口觸發(fā))

2.3.0起 end 階段返回 causedBy,有效值為 drag(拖動(dòng)導(dǎo)致)、scale(縮放導(dǎo)致)、update(調(diào)用更新接口導(dǎo)致) rotate、skew僅在 end 階段返回

e = {
  causedBy,
  type,
  detail: {
    rotate,
    skew
  }
}

setting

提供 setting 對(duì)象統(tǒng)一設(shè)置地圖配置。同時(shí)對(duì)于一些動(dòng)畫屬性如 rotate 和 skew,通過(guò) setData 分開(kāi)設(shè)置時(shí)無(wú)法同時(shí)生效,需通過(guò) settting 統(tǒng)一修改。

// 默認(rèn)值
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({
  // 僅設(shè)置的屬性會(huì)生效,其它的不受影響
  setting: {
    enable3D: true,
    enableTraffic: true
  }
})

marker

標(biāo)記點(diǎn)用于在地圖上顯示標(biāo)記的位置

屬性 說(shuō)明 類型 必填 備注 最低版本
id 標(biāo)記點(diǎn) id number marker 點(diǎn)擊事件回調(diào)會(huì)返回此 id。建議為每個(gè) marker 設(shè)置上 number 類型 id,保證更新 marker 時(shí)有更好的性能。
latitude 緯度 number 浮點(diǎn)數(shù),范圍 -90 ~ 90
longitude 經(jīng)度 number 浮點(diǎn)數(shù),范圍 -180 ~ 180
title 標(biāo)注點(diǎn)名 string 點(diǎn)擊時(shí)顯示,callout存在時(shí)將被忽略
zIndex 顯示層級(jí) number 2.3.0
iconPath 顯示的圖標(biāo) string 項(xiàng)目目錄下的圖片路徑,支持網(wǎng)絡(luò)路徑、本地路徑、代碼包路徑(2.3.0)
rotate 旋轉(zhuǎn)角度 number 順時(shí)針旋轉(zhuǎn)的角度,范圍 0 ~ 360,默認(rèn)為 0
alpha 標(biāo)注的透明度 number 默認(rèn) 1,無(wú)透明,范圍 0 ~ 1
width 標(biāo)注圖標(biāo)寬度 number/string 默認(rèn)為圖片實(shí)際寬度
height 標(biāo)注圖標(biāo)高度 number/string 默認(rèn)為圖片實(shí)際高度
callout 自定義標(biāo)記點(diǎn)上方的氣泡窗口 Object 支持的屬性見(jiàn)下表,可識(shí)別換行符。 1.2.0
label 為標(biāo)記點(diǎn)旁邊增加標(biāo)簽 Object 支持的屬性見(jiàn)下表,可識(shí)別換行符。 1.2.0
anchor 經(jīng)緯度在標(biāo)注圖標(biāo)的錨點(diǎn),默認(rèn)底邊中點(diǎn) Object {x, y},x 表示橫向(0-1),y 表示豎向(0-1)。{x: .5, y: 1} 表示底邊中點(diǎn) 1.2.0
aria-label 無(wú)障礙訪問(wèn),(屬性)元素的額外描述 string 2.5.0

marker 上的氣泡 callout

屬性 說(shuō)明 類型 最低版本
content 文本 string 1.2.0
color 文本顏色 string 1.2.0
fontSize 文字大小 number 1.2.0
borderRadius 邊框圓角 number 1.2.0
borderWidth 邊框?qū)挾?/td> number 2.3.0
borderColor 邊框顏色 string 2.3.0
bgColor 背景色 string 1.2.0
padding 文本邊緣留白 number 1.2.0
display 'BYCLICK':點(diǎn)擊顯示; 'ALWAYS':常顯 string 1.2.0
textAlign 文本對(duì)齊方式。有效值: left, right, center string 1.6.0
anchorX 橫向偏移量,向右為正數(shù) number 2.11.0
anchorY 縱向偏移量,向下為正數(shù) number 2.11.0

marker 上的氣泡 label

屬性 說(shuō)明 類型 最低版本
content 文本 string 1.2.0
color 文本顏色 string 1.2.0
fontSize 文字大小 number 1.2.0
x label的坐標(biāo)(廢棄) number 1.2.0
y label的坐標(biāo)(廢棄) number 1.2.0
anchorX label的坐標(biāo),原點(diǎn)是 marker 對(duì)應(yīng)的經(jīng)緯度 number 2.1.0
anchorY label的坐標(biāo),原點(diǎn)是 marker 對(duì)應(yīng)的經(jīng)緯度 number 2.1.0
borderWidth 邊框?qū)挾?/td> 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 文本對(duì)齊方式。有效值: left, right, center string 1.6.0

polyline

指定一系列坐標(biāo)點(diǎn),從數(shù)組第一項(xiàng)連線至最后一項(xiàng)

屬性 說(shuō)明 類型 必填 備注 最低版本
points 經(jīng)緯度數(shù)組 array [{latitude: 0, longitude: 0}]
color 線的顏色 string 十六進(jìn)制
width 線的寬度 number
dottedLine 是否虛線 boolean 默認(rèn) false
arrowLine 帶箭頭的線 boolean 默認(rèn) false,開(kāi)發(fā)者工具暫不支持該屬性 1.2.0
arrowIconPath 更換箭頭圖標(biāo) string 在 arrowLine 為 true 時(shí)生效 1.6.0
borderColor 線的邊框顏色 string 1.2.0
borderWidth 線的厚度 number 1.2.0

polygon

指定一系列坐標(biāo)點(diǎn),根據(jù) points 坐標(biāo)數(shù)據(jù)生成閉合多邊形

屬性 說(shuō)明 類型 必填 備注 最低版本
points 經(jīng)緯度數(shù)組 array [{latitude: 0, longitude: 0}] 2.3.0
strokeWidth 描邊的寬度 number 2.3.0
strokeColor 描邊的顏色 string 十六進(jìn)制 2.3.0
fillColor 填充顏色 string 十六進(jìn)制
zIndex 設(shè)置多邊形Z軸數(shù)值 number 2.3.0

circle

在地圖上顯示圓

屬性 說(shuō)明 類型 必填 備注
latitude 緯度 number 浮點(diǎn)數(shù),范圍 -90 ~ 90
longitude 經(jīng)度 number 浮點(diǎn)數(shù),范圍 -180 ~ 180
color 描邊的顏色 string 十六進(jìn)制
fillColor 填充顏色 string 十六進(jìn)制
radius 半徑 number
strokeWidth 描邊的寬度 number

control

在地圖上顯示控件,控件不隨著地圖移動(dòng)。即將廢棄,請(qǐng)使用 cover-view

屬性 說(shuō)明 類型 必填 備注
id 控件id number 在控件點(diǎn)擊事件回調(diào)會(huì)返回此id
position 控件在地圖的位置 object 控件相對(duì)地圖位置
iconPath 顯示的圖標(biāo) string 項(xiàng)目目錄下的圖片路徑,支持本地路徑、代碼包路徑
clickable 是否可點(diǎn)擊 boolean 默認(rèn)不可點(diǎn)擊

position

屬性 說(shuō)明 類型 必填 備注
left 距離地圖的左邊界多遠(yuǎn) number 默認(rèn)為0
top 距離地圖的上邊界多遠(yuǎn) number 默認(rèn)為0
width 控件寬度 number 默認(rèn)為圖片寬度
height 控件高度 number 默認(rèn)為圖片高度

bindregionchange 返回值

屬性 說(shuō)明 類型 備注
type 視野變化開(kāi)始、結(jié)束時(shí)觸發(fā) string 視野變化開(kāi)始為begin,結(jié)束為end
causedBy 導(dǎo)致視野變化的原因 string 拖動(dòng)地圖導(dǎo)致(drag)、縮放導(dǎo)致(scale)、調(diào)用接口導(dǎo)致(update)

Bug & Tip

  1. tip:個(gè)性化地圖暫不支持工具中調(diào)試。請(qǐng)先使用微信客戶端進(jìn)行測(cè)試。
  2. tip:地圖中的顏色值color/borderColor/bgColor等需使用6位(8位)十六進(jìn)制表示,8位時(shí)后兩位表示alpha值,如:#000000AA
  3. tip:地圖組件的經(jīng)緯度必填, 如果不填經(jīng)緯度則默認(rèn)值是北京的經(jīng)緯度。
  4. tip: map 組件使用的經(jīng)緯度是火星坐標(biāo)系,調(diào)用 wx.getLocation 接口需要指定 type 為 gcj02
  5. tip:從 2.8.0 起 map 支持同層渲染,更多請(qǐng)參考原生組件使用限制
  6. tip:請(qǐng)注意原生組件使用限制

比例尺

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

示例代碼

在開(kāi)發(fā)者工具中預(yù)覽效果

<!-- 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)
  }
})


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)