溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

微信小程序開發(fā)怎么實(shí)現(xiàn)一個(gè)跑步小程序

發(fā)布時(shí)間:2022-08-23 16:12:04 來(lái)源:億速云 閱讀:236 作者:iii 欄目:開發(fā)技術(shù)

這篇“微信小程序開發(fā)怎么實(shí)現(xiàn)一個(gè)跑步小程序”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“微信小程序開發(fā)怎么實(shí)現(xiàn)一個(gè)跑步小程序”文章吧。

自己動(dòng)手實(shí)現(xiàn)一個(gè)跑步小程序 用到的方法:wx.onLocationChange,監(jiān)聽實(shí)時(shí)地理位置變化事件,需結(jié)合 wx.startLocationUpdateBackground,wx.startLocationUpdate使用。

地圖組件

定義一個(gè)全屏的地圖,地圖配置項(xiàng)經(jīng)緯度(longitude,latitude),縮放(scale),標(biāo)記點(diǎn)(markers),路線(polyline)等

<view class="map">
    <map id="map" longitude="{{longitude}}" latitude="{{latitude}}" scale="{{scale}}" markers="{{markers}}"
        polyline="{{polyline}}" ></map>
</view>

地圖配置項(xiàng)字段

data: {
    latitude: '',
    longitude: '',
    scale: 16,
    markers: [],
    polyline: [{
        points: [],
        color: '#FB8337',
        width: 5
    }]
},

當(dāng)前位置

wx.getLocation獲取當(dāng)前位置,

// 獲取當(dāng)前位置
getNowLocation() {
    wx.getLocation({
        type: 'gcj02',
        isHighAccuracy: true,
        success: (res) => {
            this.setData({
                latitude: res.latitude,
                longitude: res.longitude,
            })
        }
    })
},

效果如圖:

微信小程序開發(fā)怎么實(shí)現(xiàn)一個(gè)跑步小程序

需在app.json中配置

  "permission": {
        "scope.userLocation": {
            "desc": "你的位置信息將用于小程序位置接口的效果展示"
        }
    },
      "requiredBackgroundModes": [
        "location"
    ],
    "requiredPrivateInfos": [
        "getLocation",
        "onLocationChange",
        "startLocationUpdate",
        "startLocationUpdateBackground"
    ]

效果如下:

微信小程序開發(fā)怎么實(shí)現(xiàn)一個(gè)跑步小程序

點(diǎn)擊允許,就可以看到當(dāng)前位置了

微信小程序開發(fā)怎么實(shí)現(xiàn)一個(gè)跑步小程序

開始跑步按鈕

添加一個(gè)開始跑步按鈕

<button bindtap="startRun" class="btn" type="primary">開始跑步</button>
.map {
    width: 100%;
    height: 100vh;
}

.btn {
    position: absolute;
    bottom: 100rpx;
    left: 0;
    right: 0;
    z-index: 1000;
}

GPS定位

點(diǎn)擊開始跑步的時(shí)候,我們需要獲取手機(jī)的GPS定位是否開啟,開啟后才能獲取地圖返回我們的坐標(biāo)

// 判斷手機(jī)定位是否開啟 
checkGPS() {
    wx.getSystemInfo({
        success: (res) => {
            if (!res.locationEnabled) {
                wx.showModal({
                    title: '提示',
                    content: '請(qǐng)先開啟手機(jī)GPS定位',
                    showCancel: false
                })
                return;
            }
        }
    })
},

開發(fā)者工具獲取不到,只能用手機(jī)測(cè)試

微信小程序開發(fā)怎么實(shí)現(xiàn)一個(gè)跑步小程序

設(shè)置前后臺(tái)允許獲取定位

wx.startLocationUpdate({
    success: () => {
        wx.onLocationChange((res) => {
            this.setData({
                latitude: res.latitude,
                longitude: res.longitude
            })
            wx.getSetting({
                success: (res) => {
                    wx.hideLoading()
                    if (!res.authSetting['scope.userLocationBackground']) {
                        wx.showModal({
                            title: '提示',
                            content: '為確保后臺(tái)定位精確,請(qǐng)先設(shè)置 "使用小程序時(shí)和離開后允許" 再進(jìn)行跑步',
                            showCancel: false,
                            success: function (res) {
                                if (res.confirm) {
                                    wx.openSetting()
                                }
                            }
                        })
                    } else {
                        this.running();
                    }
                }
            })
            wx.offLocationChange();
            wx.stopLocationUpdate();
        })
    },
})

開啟前后臺(tái)定位

// 開始前后臺(tái)定位
wx.startLocationUpdateBackground({
    success: () => {
        draw();
        time();
    },
    fail: () => {
        wx.showToast({
            title: '后臺(tái)定位開啟失敗',
            icon: 'none'
        })
    }
})

繪制路線

 let arr = this.data.polyline[0].points;
    wx.onLocationChange((res) => {
        if (dis > 0) {
            arr.push({
                latitude: res.latitude,
                longitude: res.longitude
            })
            totalDistance = Number(((totalDistance + dis) * 100).toFixed(2)) / 100;
        }
    }
    this.setData({
        'polyline[0].points': arr
    })
})

以上就是關(guān)于“微信小程序開發(fā)怎么實(shí)現(xiàn)一個(gè)跑步小程序”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI