Implémentation de la fonction de positionnement GPS uniapp

Scénario du projet :

Je travaille récemment sur une application et les exigences du produit sont les suivantes : elle doit détecter si la fonction de positionnement GPS de votre téléphone mobile est activée, et deuxièmement, elle ne peut fonctionner que dans la plage d'adresses donnée, sinon elle donnera un avertissement. .


Plan de mise en œuvre:

下面的写法,亲测有效

let system = uni.getSystemInfoSync(); // 获取系统信息
if (system.platform === 'android') {
    
     // 判断平台
		var context = plus.android.importClass("android.content.Context");
		var locationManager = plus.android.importClass("android.location.LocationManager");
		var main = plus.android.runtimeMainActivity();
		var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
		if (!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)) {
    
    
				uni.showModal({
    
    
					title: '提示',
					content: '请打开定位服务功能',
					showCancel: false, // 不显示取消按钮
					confirmText: "去打开", // 确认按钮文字 
					confirmColor:'#09c499',//删除字体的颜色
					success:async function () {
    
    
							if (!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)) {
    
    
								    var Intent = plus.android.importClass('android.content.Intent');
								    var Settings = plus.android.importClass('android.provider.Settings');
								    var intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
								    main.startActivity(intent); // 打开系统设置GPS服务页面
								}
							}
						})
			        }else{
    
    
			            ····
					}
			    } else if (system.platform === 'ios') {
    
    
			        console.log("苹果");
			        var cllocationManger = plus.ios.import("CLLocationManager");
			        var enable = cllocationManger.locationServicesEnabled();
			        var status = cllocationManger.authorizationStatus();
			        plus.ios.deleteObject(cllocationManger);
			        if (enable && status != 2) {
    
    
			               ····
			        } else {
    
    
			            uni.showModal({
    
    
			                title: '提示',
			                content: '请打开定位服务功能',
			                showCancel: false, // 不显示取消按钮
			                confirmText: "去打开", // 确认按钮文字 
			                confirmColor:'#09c499',//删除字体的颜色
			                success() {
    
    
			                    var UIApplication = plus.ios.import("UIApplication");
			                    var application2 = UIApplication.sharedApplication();
			                    var NSURL2 = plus.ios.import("NSURL");
			                    var setting2 = NSURL2.URLWithString("App-Prefs:root=Privacy&path=LOCATION");
			                    application2.openURL(setting2);
			                    plus.ios.deleteObject(setting2);
			                    plus.ios.deleteObject(NSURL2);
			                    plus.ios.deleteObject(application2);
			                }
			            });
			        }
			    }
			}

La méthode ci-dessus peut être utilisée directement. Le système détecte si votre téléphone mobile est iOS ou Android, puis détecte si la fonction de positionnement est activée sur votre téléphone mobile. Dans le cas contraire, il vous demande si le positionnement est activé. Cliquez pour ouvrir et sauter. directement au téléphone.Lieux GPS. Ensuite, nous jugeons si elle dépasse la plage dans la position else.

// 最近使用的时候发现gcj02后面需要加一个空格,要不然不走下面的逻辑,不知道为啥。写的时候,真机跑一下,看看需不需要加空格。
uni.getLocation({
    
    
	type:'gcj02 ',
	geocode:true,
	success:async function (res) {
    
    
	    // 需要后端提供接口返给我们目的地的经纬度
	    // res.longitude 当前经度
		// res.latitude 当前纬度
		// 传给后端返给距离 parseInt(arrT.data.rows[0].distance)
			  if(arrT.data.code == '0'){
    
    
				 if(parseInt(arrT.data.rows[0].distance) < 2000){
    
    
					  uni.navigateTo({
    
    
						   url:''
					  })
				 }else {
    
    
					uni.showToast({
    
    
						title:'当前定位和该位置偏差超过2000米,不能进行操作!',
						duration:2000,
						icon:'none'
					 })
				 }
		    }
	 }
})

Résumer

OK, c'est tout pour aujourd'hui. J'espère que le contenu d'aujourd'hui pourra vous être utile. N'oubliez pas de nous soutenir !

Articles précédents :
Uniapp Picture Preview implémente la modularisation de vuex
dans l'article d'apprentissage de vuex

Je suppose que tu aimes

Origine blog.csdn.net/m0_56144469/article/details/127672629
conseillé
Classement