H5实时上传位置定位 pc生成轨迹;h5保持后台运行

本文深入探讨了两种持续GPS定位的实现方法,一种适用于实时上传定位数据,另一种则在后台运行时提供持续定位,尽管精确度稍逊。文章还提供了代码示例和优化建议,包括如何在后台运行程序以持续获取GPS位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决方案 1

	/*
		*若通过用户操作获取定位无需实时上传定位 可用一下代码 相对定位更加准确
		*若需求是生成轨迹 如:滴滴打车 顺风车 运动轨迹 以下代码不可行 
		*在息屏 或 代码再后台运行时 改代码  无法获取定位信息
	*/
    navigator.geolocation.getCurrentPosition(onSuccess , onError,{
        enableHighAcuracy : true,// 指示浏览器获取高精度的位置,默认为false  
        timeout : 5000,// 指定获取地理位置的超时时间,默认不限时,单位为毫秒  
        maximumAge : 2000 // 最长有效期,在重复获取地理位置时,此参数指定多久再次获取位置。  
    });
    
   //定位数据获取成功响应
   function  onSuccess(position){ })
   //定位数据获取失败响应
   function onError(error) {  
       if(window.mySET1)clearTimeout(window.mySET1)
       window.mySET1=setTimeout(() => {
           switch(error.code) {
               case error.PERMISSION_DENIED:
                   console.log("定位失败,用户拒绝请求地理定位");
                   Toast("您拒绝对获取地理位置的请求");
               break;
               case error.POSITION_UNAVAILABLE:
                   Toast("定位失败,位置信息是不可用");
                   console.log("定位失败,位置信息是不可用");
               break;
               case error.TIMEOUT:
                   console.log("定位失败,请求获取用户位置超时");
                   Toast("请求您的地理位置超时");
               break;
               case error.UNKNOWN_ERROR:
                   Toast("定位失败,定位系统失效");
                   console.log("定位失败,定位系统失效");
               break;
           }  
       }, 500); 
   }  
   

解决方案 2

	/*
		*该方法可在后台运行 或  息屏 后 继续获取定位
		*定位位置相对不是那么准确 存在些许误差 但是够用 
		* 参考文档:http://www.html5plus.org/doc/zh_cn/geolocation.html
	*/ 
	// 扩展API加载完毕后调用onPlusReady回调函数 
	document.addEventListener('plusready', onPlusReady, false);
	// 扩展API加载完毕,现在可以正常调用扩展API
	function onPlusReady(){
		// 使用百度地图地位模块获取位置信息
		plus.geolocation.getCurrentPosition(function(p){
			alert('Geolocation\nLatitude:' + p.coords.latitude + '\nLongitude:' + p.coords.longitude + '\nAltitude:' + p.coords.altitude);
		}, function(e){
			alert('Geolocation error: ' + e.message);
		},{provider:'baidu'});
	}
	

------------------------2020-9-3-------------------------------

对解决方案进行优化
若以上代码依旧未解决持续定位问题

	/*
		*允许程序后台运行,以持续获取GPS位置  
		*结束程序后台运行  
		* 此处代码摘自:https://ask.dcloud.net.cn/article/1273
		* 若代码添加后还是不理想 在手机设置中设置允许后台运行 找到电池相关设置 以华为为例 
		* 设置-》电池-》耗电排行-》你的APP-》应用启动管理-》允许后台活动
	*/
	var g_wakelock = null;  
	//允许程序后台运行,以持续获取GPS位置  
	function wakeLock() {  
	    //Android  
	    var main = plus.android.runtimeMainActivity();  
	    var Context = plus.android.importClass("android.content.Context");  
	    var PowerManager = plus.android.importClass("android.os.PowerManager");  
	    var pm = main.getSystemService(Context.POWER_SERVICE);  
	    g_wakelock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "ANY_NAME");  
	    g_wakelock.acquire();  
	}  
	wakeLock()
	//结束程序后台运行  
	function releaseWakeLock () {  
	    if(g_wakelock != null && g_wakelock.isHeld()) {  
	        g_wakelock.release();  
	        g_wakelock = null;  
	    }  
	}  
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Web_Lys

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值