uniapp获取当前的位置和刷新页面,内置地图,返回上一页并刷新

//APP 就可以直接获取到
// #ifdef APP-PLUS
uni.getLocation({
    type: 'gcj02',
    geocode: true,
    highAccuracyExpireTime: 3000,
    success: function(res) {
        that.longitude = res.longitude; // 经度
        that.latitude = res.latitude; // 纬度
        console.log('当前位置的经度:' + res.longitude);
        console.log('当前位置的纬度:' + res.latitude);
        console.log('当前地址:' + res.address.city);
        // console.log(that.address)
        that.address = res.address.district
    }
});
// #endif
 

计算两点之间的距离(两个经纬度)

  rad(d) {
      return d * Math.PI / 180.0;
    }, 

/**
     * 计算两点间直线距离
     * @param a 表示纬度差
     * @param b 表示经度差
     * @return 返回的是距离,单位m
     */
    getDistance(latFrom, lngFrom, latTo, lngTo) {
      var radLatFrom = this.rad(latFrom);
      var radLatTo = this.rad(latTo);
      var a = radLatFrom - radLatTo;
      var b = this.rad(lngFrom) - this.rad(lngTo);
      var distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLatFrom) * Math.cos(radLatTo) * Math.pow(Math.sin(b / 2), 2)));
      distance = distance * EARTH_RADIUS;
      distance = Math.round(distance * 10000) / 10000;
      return parseFloat(distance.toFixed(0));
    },
 
手动点击刷新
<template>
    <view>
        <view v-for="(item,index) of list" :key="index">
            {{item}}
        </view>
        <button @click="pullDown">点击触发下拉刷新</button>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                list: [1, 2, 3, 4, 5]
            }
        },
        methods: {
            pullDown() {
                //触发下拉刷新
                uni.startPullDownRefresh()
            }
        },
        onPullDownRefresh() {
            console.log("触发下拉刷新")
            setTimeout(() => {
                this.list = [1, 2, 3, 5, 3, 2]
                //关闭下拉刷新
                uni.stopPullDownRefresh()
            }, 2000)
        }
    }
</script>

<style>
</style>
配置刷新
所对应的函数
<template>
    <view>
        <view v-for="(item,index) of list" :key="index">
            {{item}}
        </view>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                list: [1, 2, 3, 4, 5]
            }
        },
        methods: {},
        onPullDownRefresh() {
            console.log("触发下拉刷新")
            setTimeout(() => {
                this.list = [1, 2, 3, 5, 3, 2]
                //关闭下拉刷新
                uni.stopPullDownRefresh()
            },2000)
        }
    }
</script>

<style>
</style>
本页面返回上一个页面的刷新
    let pages = getCurrentPages(); // 当前页面
    let beforePage = pages[pages.length - 2]; // 上一页
     setTimeout(() => {
                                        uni.navigateBack({
                                            delta: 1,
                                            success: function() {
                                                beforePage.$vm.reFresh(); // 执行前一个页面的刷新
                                            }
                                        });
                                    }, 1000);
内置地图
    uni.openLocation({
                            address: value.stationName,
                            longitude: Number(value.coordinateX),
                            latitude: Number(value.coordinateY),
                            fail(error) {
                                uni.showToast({
                                    icon: 'error',
                                    title: '打开地图失败'
                                });
                            }
                        });
自动返回上一页并进行刷新
let pages = getCurrentPages(); // 当前页面
let beforePage = pages[pages.length - 2]; // 上一页  
setTimeout(() => {
        uni.navigateBack({
        delta: 1,
        success: function() {
        beforePage.$vm.reFresh(); // 执行前一个页面的刷新
        }
      })
   }, 1000)
位置详情网址 https://uniapp.dcloud.net.cn/api/location/location.html#getlocation

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
你可以使用uni-app提供的页面生命周期函数和uni.navigateTo()方法来实现返回一页面并刷新页面重新根据接口获取数据的功能。 具体实现方法如下: 1. 在页面的onLoad()生命周期函数中,调用接口获取数据并将数据保存在页面的data中。 2. 在页面的onShow()生命周期函数中,判断是否需要重新获取数据。如果需要,则调用接口获取数据并将数据保存在页面的data中。 3. 在页面的onUnload()生命周期函数中,清空页面的data数据。 4. 在页面中设置一个返回按钮,并在按钮的点击事件中使用uni.navigateTo()方法返回一页面。 5. 在上一页面的onShow()生命周期函数中,判断是否需要刷新数据。如果需要,则调用接口获取数据并更新页面。 下面是一个示例代码: ``` // 返回按钮的点击事件 goBack() { uni.navigateTo({ url: '../previousPage/previousPage' }) } // 当前页面的生命周期函数 onLoad() { // 调用接口获取数据并保存在data中 // ... }, onShow() { if (this.needRefresh) { // 调用接口获取数据并保存在data中 // ... this.needRefresh = false; } }, onUnload() { // 清空data中的数据 // ... } // 上一页面的生命周期函数 onShow() { if (this.needRefresh) { // 调用接口获取数据并更新页面 // ... this.needRefresh = false; } } ``` 需要注意的是,示例代码中的this.needRefresh是一个标记变量,用于判断是否需要重新获取数据或刷新数据。你可以根据实际情况进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_2524963996

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值