为了账号安全,请及时绑定邮箱和手机立即绑定

支付宝小程序地图层级和控件问题

标签:
WebApp

最近在写支付宝小程序的时候,想要在地图上面添加几个按钮,但是发现支付宝小程序不能像微信小程序那样有专用的控件标签,只能通过在 <map> 标签内添加 controls="{{controls}}"属性来实现这个功能。具体实现方法如下:

添加控件

webp

官方文档

注意:这个controls 是一个数组,里面可以写多个控件。

具体写法如下:
index.axml文件:

<map 
      id="myMap" 
      onMarkerTap="markertap" 
      show-location  
      controls="{{controls}}" 
      onControlTap="controltap"></map>

index.js文件:

Page({    data: {
        motto: 'Hello World',
        controls: [{
            id: 1,
            iconPath: '../../img/location.png',
            position: {
                left: 280,
                top: 250,
                width: 30,
                height: 30
            },            clickable: true
        },{            id: 2,
            iconPath: '../../img/location.png',
            position: {
                left: 280,
                top: 300,
                width: 30,
                height: 30
            },            clickable: true
        },{            id:3,
            iconPath:'../../img/scancode.png',
            position:{
                left:10,
                top:400,
                width:300,
                height:40
            },            clickable: true
        }]
    },
})

最后效果是这样:


webp

注意:在controls内部写入了 id ,这个是用来区分我点击哪个控件触发对应事件的。因为在 <map> 标签内,所有的控件只能通过一个 onControlTap="controltap"来触发,所以需要一个 id 来作为索引。

为控件添加事件

在上面地图中,我们有三个控件,所以就需要先分别写三个与之对应的事件,然后根据官方提供的id属性这个思路来做,通过点击控件来判断该控件返回的 id 值,来判断到底点到了哪个控件上面,再来匹配且触发与之对应的事件:

webp

index.js文件

//三个事件
    scanCode() {
        my.scan({            type: 'qr',            success: (res) => {
                my.alert({ title: res.code });
            },
        });
    },
    call() {
        my.makePhoneCall({ number: '400-6701818' });
    },
    moveToLocation() {        this.mapCtx.moveToLocation()
    },//事件的处理方法
    controltap(e){        switch(e.controlId){            case 1:                this.moveToLocation();                break;            case 2:                this.call();                break;            case 3:                this.scanCode();                break;            default:break;
        }
    }



作者:刘员外__
链接:https://www.jianshu.com/p/328bc24d3f65


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消