Implementación de la función de posicionamiento GPS uniapp

Escenario del proyecto:

Estoy trabajando en una aplicación recientemente y los requisitos del producto son: debe detectar si su teléfono móvil tiene activada la función de posicionamiento GPS y, en segundo lugar, solo puede funcionar dentro del rango de direcciones determinado; de lo contrario, dará una advertencia. .


Plan de IMPLEMENTACION:

下面的写法,亲测有效

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);
			                }
			            });
			        }
			    }
			}

El método anterior se puede utilizar directamente. El sistema detecta si su teléfono móvil es iOS o Android y luego detecta si su teléfono móvil tiene la función de posicionamiento activada. De lo contrario, le preguntará si el posicionamiento está activado. Haga clic para abrir y saltar. Directamente al teléfono Lugares GPS. A continuación, juzgamos si excede el rango en la posición 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'
					 })
				 }
		    }
	 }
})

Resumir

Bien, eso es todo por hoy. Espero que el contenido de hoy pueda serte útil. ¡Recuerda apoyarnos!

Artículos anteriores:
la vista previa de imágenes de uniapp implementa la modularización de vuex
en el artículo de aprendizaje de vuex

Guess you like

Origin blog.csdn.net/m0_56144469/article/details/127672629