Taro 小程序多端适配踩坑记 —— 地图篇

1,578 阅读3分钟

第一次接触Taro框架的地图(Map)组件,不停的踩坑😭,赶紧记录下来。。。

首先,我们需要区分当前所处环境,再进行多端兼容性适配:

import Taro from '@tarojs/taro';

const TT = 'tt';  // 字节跳动抖音小程序
const WEAPP = 'weapp';  // 微信小程序
const ALIPAY = 'aliapp';  // 支付宝小程序

export const getAppName = () => {
  const curEnv = Taro.getEnv();
  return {
    WEAPP,
    ALIPAY,
    TT
  }[curEnv] || undefined;
};

export const isWeapp = () => getAppName() === WEAPP;
export const isAliapp = () => getAppName() === ALIPAY;
export const isTT = () => getAppName() === TT;

以下代码都以React为例,仅限于微信小程序、支付宝小程序以及抖音小程序:

一、Marker 标记点

1.1 callout 气泡

Taro 在支付宝小程序只能设置 content 属性,无法设置其他样式,所以在支付宝小程序中如果需要更加丰富的样式定义,可以使用 customCallout。

1.1.1 textAlign 文本对齐方式

  • 微信小程序:挪动的是整个气泡的对齐位置,而不是气泡内文本的对齐位置

image.png

  • 抖音小程序:正常 ✅
image.png

1.1.2 bgColor 背景色

地图中的颜色值color/borderColor/bgColor等需使用6位(8位)十六进制表示,8位时后两位表示 alpha 值,如:#000000AA

  • 微信小程序:正常 ✅

  • 抖音小程序

const markers = [{
  callout: {
    content: '我是callout'
    bgColor: '#0f0f0f22',
    borderColor: '#0f0f0faa',
    borderWidth: 10,
    textAlign: 'left'
  }
}]

image.png

1.1.3 scale 缩放级别

  • 微信小程序中 scale 的范围是:3-20,默认值是 16

image.png

  • 抖音小程序中 scale 的范围时:3-19,默认值时 16

image.png

  • 支付宝小程序中 scale 的范围时:5-18,默认值是 16

1.1.4 content 内容

  • 支付宝小程序的content属性不支持换行(\n或使用模版字符串进行换行)

二、Polygons 多边形

2.1 微信小程序 / 支付宝小程序使用 useStatesetState 更改 polygons 属性

const [polygons, setPolygons] = useState([]);
<Map polygons={polygons} />

2.2 抖音小程序中 polygons API无效 ❌

三、onRegionChange API 视野发生变化时触发的事件

3.1 微信小程序

  • onRegionChange API 的返回值为:
属性类型说明备注
typestring视野变化开始、结束时触发begin 或 end
causeBystring导致视野变化的原因begin 阶段:gesture(手势触发)、update(接口触发) | end 阶段:drag(拖动导致)、scale(缩放导致)、update(调用更新接口导致)
detailregionDetail视野改变详情
  • regionDetail 内的属性:
属性类型说明
rotatenumber旋转角度
skewnumber倾斜角度
scalenumber缩放级别
centerLocationpoint中心点
region{notheast: point, southeast: point}
  • point 内的属性:
属性类型说明
longitudenumber经度
latitudenumber纬度

image.png

3.2 支付宝小程序

onRegionChange API 的返回值为:

属性类型说明备注
typestring视野变化开始、结束时触发begin 或 end
latitudenumber视野中心纬度
longitudenumber视野中心经度
scalenumber缩放级别
skewnumber倾斜角度
rotatenumber旋转角度
causedBystring导致视野变化的原因begin 阶段:update(接口触发)、gesture(手势触发)| end 阶段:update(接口触发)、drag/scale/skew/rotate(手势触发)

image.png

3.3 抖音小程序中 onRegionChange API无效 ❌

四、总结

在使用 Taro 进行多端开发时,一定要分别在对应的官方文档上查看 api 是否支持

支付宝小程序官方文档
微信小程序官方文档
字节小程序官方文档
Taro 官方文档

本篇文章将持续更新中,如果有问题的地方,欢迎大家指出来~💗