uniapp は、uni 独自の地図 (Tencent Map) を使用して配達機能を開発します。バックグラウンドで配達員の位置をリアルタイムで特定します。

1. 次の設定を設定 ---manifest.json/source code view/"mp-weixin" に追加します。

バックグラウンド位置決め機能をオンにする識別子を示す変数をグローバルに定義 --- main.js でpositionTimer を定義

"permission" : {
            "scope.userLocation" : {
                "desc" : "获取配送地址"
            }
        },
        "requiredPrivateInfos" : [
            "getLocation",
            "chooseLocation",
            "onLocationChange",
            "startLocationUpdate",
            "startLocationUpdateBackground"
        ],
        "requiredBackgroundModes" : [ "location" ], //需要再后台使用

 2. 注文品を受け取るために配達員が必要な場所に電話する

	//确认抢单
			sureOrderBtn() {
				var that = this;
                 //开启后台小程序也定位功能
				wx.startLocationUpdateBackground({
						if (Vue.prototype.positionTimer == null) {
			            wx.startLocationUpdateBackground({
				                   success(res) {
					Vue.prototype.positionTimer = setInterval(function() {
						let data = {
							lat: '',
							lng: ''
						}
						const _locationChangeFn = function(res) {
							data.lat = res.latitude;
								data.lng = res.longitude

							console.log('这里调用向后端发送经纬度的接口',data)
							wx.offLocationChange(_locationChangeFn)
						}
						wx.onLocationChange(_locationChangeFn)

					}, 30000)
				},
				fail(res) {
					console.log('开启后台定位失败', res);
					//授权失败后引导用户打开定位信息
					this.openSetting();
				}
			})

		}
					},
					fail(res) {
						console.log('开启后台定位失败', res);
						//授权失败后引导用户打开定位信息
						this.openSetting();
					}
				});

			},
//定位授权弹框

openSetting(){
	wx.getSetting({
			success: function(res) {
				var statu = res.authSetting;
				if (!statu["scope.userLocationBackground"]) {
					wx.showModal({
						title: "请授权使用期间和离开后的位置!",
						content: "需要获取您的地理位置,请确认授权,否则地图功能将无法使用",
						success: function(tip) {
							if (tip.confirm) {
								wx.openSetting({
									success: function(data) {
										if (data.authSetting[
												"scope.userLocationBackground"
											] === true) {

										}
									}
								});
							} else {
								//console.log('用户拒绝打开设置界面')
							}
						}
					});
				}
			}
		});
}

注: ミニ プログラムがバックグラウンドを終了した後も、測位関数は通常どおりバックエンドに緯度と経度を送信できますが、ミニ プログラムを強制終了すると、再度呼び出されることはありません。ミニ プログラムを開いたときに配信されます。がある場合は、sureOrderBtn のメソッドが自動的に再度呼び出されます。

Supongo que te gusta

Origin blog.csdn.net/weixin_69666355/article/details/131327346
Recomendado
Clasificación