uni-app动态设置原生标题左侧按钮

一、需要把获取到的用户位置显示在标题栏的左侧,就像下图一样
在这里插入图片描述
先在pages.json里写入原生标题按钮

{
      "path": "pages/index/index2",
      "style": {
        "navigationBarTitleText": "demo",
        "enablePullDownRefresh": true,
        "app-plus":{
          "titleNView": {
              "buttons": [ //原生标题栏按钮配置,
                  {
                "type":"none",
                      "text": "位置",
                "fontSize": "17",
                "float":"left",
                "width": "70",
                "select": "true"
                  },
              {
                "type":"none",
                "float": "right",
                "fontSrc":"/static/iconfont.ttf",
                "text": "\ue69a"
              }
              ]
          }
        }
      }
    },

这里以高德微信小程序SDK为例,简述如何在uni-app中利用微信小程序第三方SDK,实现App端和微信小程序代码的通用

1、获取SDK

在高德开放平台(https://lbs.amap.com/api/wx/summary)

注册账号并申请相关key信息

然后下载它的微信小程序SDK(https://lbs.amap.com/api/wx/download)

2、引入SDK

index2.vue引入

import amap from '../../common/amap-wx.js';

在onLoad()中初始化一个高德小程序SDK实例对象

import amap from '../../common/amap-wx.js';  
export default {  
    data() {  
        return {  
            amapPlugin: null,  
            key: '这里填写高德开放平台上申请的key'  
        }  
    },  
    onLoad() {  
        this.amapPlugin = new amap.AMapWX({  
            key: this.key  
        });  
    }  
}  

3、使用API

利用高德小程序SDK获取当前位置信息

import amap from '../../common/amap-wx.js';  
export default {  
    data() {  
        return {  
            amapPlugin: null,  
            key: '高德key',  
            addressName: '',  
            weather: {  
                hasData: false,  
                data: []  
            }  
        }  
    },  
    onLoad() {  
        this.amapPlugin = new amap.AMapWX({  
            key: this.key  
        });  
    },  
    methods: {  
        getRegeo() {  
            uni.showLoading({  
                title: '获取信息中'  
            });  
            this.amapPlugin.getRegeo({  
                success: (data) => {  
                    console.log(data)  
                    this.addressName = data[0].regeocodeData.addressComponent.district  
                    uni.hideLoading();  
                }  
            });  
        }  
    }  
}  

这时候已经获取到了你所在的位置

重点来了,注意看代码
import amap from '../../common/amap-wx.js';  
export default {  
    data() {  
        return {  
            amapPlugin: null,  
            key: '高德key',  
            addressName: '',  
            weather: {  
                hasData: false,  
                data: []  
            }  
        }  
    },  
    onLoad() {  
        this.amapPlugin = new amap.AMapWX({  
            key: this.key  
        });  
    },  
    methods: {  
        getRegeo() {  
            uni.showLoading({  
                title: '获取信息中'  
            });  
            this.amapPlugin.getRegeo({  
                success: (data) => {  
                    console.log(data)  
                    this.addressName = data[0].regeocodeData.addressComponent.district  
                    let pages =  getCurrentPages();
                    let page = pages[pages.length-1];
                    let currentWebview = page.$getAppWebview();
                    let titleObj = currentWebview.getStyle().titleNView;
                    titleObj.buttons[0].text = this.addressName;
                    currentWebview.setStyle({
                        titleNView:titleObj
                    })
                    uni.hideLoading();  
                }  
            });  
        }  
    }  
}  

重点代码主要在这一段

let pages =  getCurrentPages();
let page = pages[pages.length-1];
let currentWebview = page.$getAppWebview();
let titleObj = currentWebview.getStyle().titleNView;
titleObj.buttons[0].text = this.addressName;
currentWebview.setStyle({
   titleNView:titleObj
})

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值