开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
基础 api
基础
应用级事件
界面
导航栏
tabbar
路由
交互反馈
下拉刷新
联系人
选择城市
选择日期
动画
画布
地图
mapcontext
设置地图属性
获取地图属性
平移和缩放
设置覆盖物
地图相关计算
屏幕坐标转换
计算路径
键盘
滚动
节点查询
选项选择器
级联选择
设置窗口背景
设置页面是否支持下拉
字体
跳转
多媒体
缓存
文件
位置
网络
设备
worker
数据安全
分享
收藏
自定义通用菜单
更新管理
web-view组件控制
升级支付宝最新版本
隐私信息授权
小程序广告
开放能力 api
开发 > api > 基础 api > 界面 > 地图 > mapcontext > 设置覆盖物 > mapcontext.smoothmovepolyline
评论
收藏
我的文档
设置

mapcontext.smoothmovepolyline(object object)

建议使用 mapcontext.smoothdrawpolyline 方法代替 mapcontext.smoothmovepolyline

基础库  或更高版本; 且 支付宝客户端 10.1.90 或更高版本; 若版本较低,建议采取 兼容处理

支小宝客户端 支持

安诊儿客户端 支持

小程序开发者工具: 不支持。

主体: 企业支付宝小程序个人支付宝小程序

绘制折线,产生轨迹动画。

也可使用此 api 结束进行中的绘制动画(入参 action 字段传 'stop')。

折线绘制完成时会触发 onpolylinemoveend 事件。可以通过 map 组件注册其回调函数,如:

object object

查看示例

属性 类型 默认值 必填 描述
polylineid number -

折线 id。自行指定的数字。当 action 为 'start' 时,每次调用请使用不同的 polylineid

points array -

经纬度数组,确定绘制的折线。数组长度不得小于 2

属性 类型 描述
latitude number

纬度

longitude number

经度

duration number 5000

绘制的时间,单位毫秒

color string -

折线颜色。支持十六进制颜色值,默认透明

width number 0

折线宽度,单位 dp

dottedline boolean false

是否绘制为虚线

iconpath string -

设置折线纹理的图片路径。支持网络地址及本地文件,不支持 gif 文件格式。iconpath 引用图片宽高需要为 2 的整数次幂
可以用相对路径写法,以 '/' 开头则表示相对小程序根目录, 如果有 iconpath,会忽略 color。但是 iconpath 可以和 colorlist 联合使用,这样纹理会浮在折线上方,为避免覆盖折线,纹理图片背景色可以设置透明。

iconwidth number -

折线纹理宽度,单位 dp。设置 iconpath 后生效

colorlist array -

折线的各段颜色。数组长度应为 points.length - 1,否则剩余折线段颜色取数组最后一位。例:colorlist:['#ff0000'] 。ios 上暂不支持 colorlist 功能

action string start

操作类型

枚举值 描述 兼容性
start

开始动画绘制

-
stop

停止动画绘制,直接完成折线绘制。使用 polylineid 指定想要停止的动画

-
success function -

调用成功的回调函数

fail function -

调用失败的回调函数

complete function -

调用结束的回调函数(调用成功、失败都会执行)

fail 回调的参数为 object,error 属性为错误码,errormessage 属性为错误消息。

错误码 错误消息 凯发app官方网站的解决方案
2 参数错误

points 数组长度需要大于 1

10001 未指定polylineid

请传入有效的 polylineid 值

mapcontext.smoothmovepolyline axml 代码
mapcontext.smoothmovepolyline js 代码
<view>
  <map
    id="map"
    longitude="120.125872"
    latitude="30.272960"
    onpolylinemoveend="onpolylinemoveend"
    style="width: 100%; height: 200px;"
  />
  <view ontap="smoothmovepolyline">绘制折线view>
view>
page({
    data: {
        mapctx: null
    },
    onready() {
        this.data.mapctx = my.createmapcontext('map');
    },
    smoothmovepolyline() {
        const anipoints = [
            {
                latitude: 30.272960,
                longitude: 120.125872,
            }, {
                latitude: 30.272960,
                longitude: 120.124572,
            },
            {
                latitude: 30.274260,
                longitude: 120.124572,
            },
            {
                latitude: 30.274260,
                longitude: 120.126572,
            },
            {
                latitude: 30.276260,
                longitude: 120.126572,
            },
            {
                latitude: 30.276260,
                longitude: 120.127272,
            },
            {
                latitude: 30.276560,
                longitude: 120.127272,
            },
            {
                latitude: 30.276860,
                longitude: 120.129872,
            }
        ];
        this.data.mapctx.smoothmovepolyline({
            // 折线 id
            polylineid: 10,
            // 经纬度数组,指定绘制路径
            points: anipoints,
            // 线路颜色
            color: '#00ff00',
            // 线路宽度
            width: 10,
            // 是否虚线
            dottedline: false,
            // 动画执行时间
            duration: 4000,
            success: res => {
                console.log('success'  json.stringify(res))
            },
            fail: err => {
                console.log('err'  json.stringify(err))
            }
        });
        settimeout(() => {
            this.data.mapctx.smoothmovepolyline({
                polylineid: 10,
                action: 'stop', // 停止动画(直接完成折线绘制)
            });
        }, 2000);
    },
    onpolylinemoveend(res) {
        console.log('onpolylinemoveend: '  json.stringify(res));
    },
});
  • bug
    在 ios 10.3.60 之前的版本中,当入参 points 长度小于 2 时不会报错,会执行 success 回调并返回 success: true。请在使用此 api 时确保入参 points 长度不小于 2。
  • tip
    polylineid 在 android 上实际不是必填项,但 ios 上必填。请确保传入正确的 polylineid 以保证兼容。
  • tip
    android 上使用 mapcontext.smoothmovepolyline 只支持同时绘制一个折线动画(api 调用时,之前正在进行的动画会立即结束),为保证效果,建议等前一个动画结束后再进行下一次调用。

q:在地图上使用 mapcontext.smoothmovepolyline 生成的轨迹为什么无法使用 clearroute 清除?

a:

clearroute 只能用于清除地图上的导航路线(route),smoothmovepolyline 产生的轨迹是折线(polyline),需要使用 mapcontext.updatecomponents 设置:

 this.mapctx = my.createmapcontext('map');
 // 清除地图上所有折线
 this.mapctx.updatecomponents({ polyline:[] }) 
 // 地图只显示一条折线 (由 anipoints 定义)
 this.mapctx.updatecomponents({
    polyline: [{
      points: anipoints,
      color: '#0000ff',
      width: 10,
    }],
 })
内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图