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