700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > H5实时上传位置定位 pc生成轨迹;h5保持后台运行

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

时间:2020-11-11 05:54:38

相关推荐

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

解决方案 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

/**该方法可在后台运行 或 息屏 后 继续获取定位*定位位置相对不是那么准确 存在些许误差 但是够用 * 参考文档:/doc/zh_cn/geolocation.html*/ // 扩展API加载完毕后调用onPlusReady回调函数 document.addEventListener('plusready', onPlusReady, false);// 扩展API加载完毕,现在可以正常调用扩展APIfunction 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'});}

-------------------------9-3-------------------------------

对解决方案进行优化

若以上代码依旧未解决持续定位问题

/**允许程序后台运行,以持续获取GPS位置 *结束程序后台运行 * 此处代码摘自:.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; } }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。