1***@qq.com
1***@qq.com
  • 发布:2020-08-14 16:50
  • 更新:2024-06-20 17:56
  • 阅读:2963

ios定位--持续定位--看官方和前辈们的文章总结

分类:uni-app

1.首先要在manifest.js开启ios后台运行能力:location
注意: 需要打自定义基座才能测试息屏操作
(ios的自定义基座安装到手机是个坑,简单的说下经验:ios证书分发布dist和开发证书dev)
自己测试当然要打dev开发证书----并且要在ios开发团队加入你测试机的id,不然你打了ios自定义基座,也装不上;
2.代码:


var watchId ; // 全局定义  

onLoad(){  
            if(that.isPhone==='android'){  
                // android手机--获取gps---这里我android和ios使用的不是一个方法定位  
                this.getLocationPermission();  
            }else{  
// ios定位  
                this.getIosLocation();  
            }  

}  

onUnload(){  
// 页面卸载--停止监听位置变化  
plus.geolocation.clearWatch(watchId);   

}  

methods:{  
            getIosLocation(){  
                console.log('我是ios 定位')  
                /**    
                 * 判断是否开启定位    
                 * @param {Object} isTask    
                 */    
                var result = permision.judgeIosPermission('location')  
                console.log(result);  
                if(result){  
                    // uni.showModal({  
                    //  content:'后台定位已开启',  
                    //  showCancel: false  
                    // });  
                    console.log('后台定位已开启')  
                }else{  
                    console.log("手机系统的定位没有打开");    
                    //  定位没有开启时  提示用户是否开启    
                     plus.nativeUI.confirm("定位权限没有开启,是否去开启?", function(e) {      
                        if (e.index == 1) {      
                            var UIApplication = plus.ios.importClass("UIApplication");      
                            var application2 = UIApplication.sharedApplication();      
                            var NSURL2 = plus.ios.importClass("NSURL");                            
                            var setting2 = NSURL2.URLWithString("app-settings:"); // 打开应用权限    
                            application2.openURL(setting2);      
                            plus.ios.deleteObject(setting2);      
                            plus.ios.deleteObject(NSURL2);      
                            plus.ios.deleteObject(application2);      
                        }      
                    }, {      
                        "buttons": ["不开启", "去设置"],      
                        "verticalAlign": "center"      
                    });      
                }  
                /**  
                 * 开启定位    
                 * @param {Object} options    
                 */    
                               // 这一步可以不要---我想获取一个点,过滤掉第一个点--而然并没有什么用---最后还是要后端纠偏一下  
                uni.getLocation({  
                    type: 'gcj02',  
                    success: function (res) {  
                        console.log('当前位置的经度:' + res.longitude);  
                        console.log('当前位置的纬度:' + res.latitude);  
                        oldLatitude = res.latitude;  
                        oldLongitude = res.longitude;  
                    }  
                });  

                // 开始监听  
                /* geocode: (Boolean 类型 )是否解析地址信息;coordsType: (String 类型 )指定获取的定位数据坐标系类型;maximumAge: (Number 类型 )获取位置信息的间隔时间;是否高精确度获取位置信息  
                高精度获取表示需要使用更多的系统资源,默认值为false。 */  
                watchId = plus.geolocation.watchPosition( function ( res ) {    
                    /* altitudeAccuracy:高度; heading: (Number 类型 )表示设备移动的方向 ;altitudeAccuracy: (Number 类型 )海拔的精确度信息*/  
                    console.log( "监听位置变化信息:" );    
                    console.log( JSON.stringify(res) );  
                    let result = res.coords;  
                    // console.log(gps.length)  

                }, function ( e ) {    
                    console.log( "监听位置变化信息失败:"+e.message );    
                }, {'enableHighAccuracy':true,'geocode': false,'maximumAge':2000, 'provider': 'amap'} );    

            },  

}
0 关注 分享

要回复文章请先登录注册

s***@163.com

s***@163.com

h5怎么调用
2022-01-02 21:44
激流勇进

激流勇进

plus.geolocation.watchPosition 有时候回调执行一阵子就不会在执行了 这种情况作者遇到过吗?
2021-08-13 17:37
6***@qq.com

6***@qq.com

能否贴一下安卓持续定位的代码?
2021-07-05 10:31
1***@qq.com

1***@qq.com (作者)

回复 1***@163.com :
要保活
2021-06-05 15:51
1***@qq.com

1***@qq.com (作者)

回复 1***@163.com :
如果是息屏或者切到后台运行app,需要去插件市场引入原生的定位插件和做保活机制
2021-02-22 17:01
1***@163.com

1***@163.com

后台持续定位是不是必须打包出来才可以.我在调试的时候,1,2分钟就不动了
2021-02-04 19:44