let watchGpsId = undefined; /** * 开启GPS位置变化监听 * @param {Function} callChange GPS位置变化回调callChange(纬度,经度); */ function plusGPSListenerOn(callChange) { mui.plusReady(function() { watchGpsId = plus.geolocation.watchPosition(function(p) { if (callChange) callChange(p.coords.latitude, p.coords.longitude); }, function(err) { console.log('定位错误 = ' + err.message); }, { provider: 'system', coordsType: 'wgs84', geocode: false, enableHighAccuracy: true, //这个布尔值用来表明应用是否使用其最高精度来表示结果。如果值为 true ,同时设备能够提供一个更精确的位置,那么设备就会使用这个位置 maximumAge: 0, //它表明可以返回多长时间(即最长年龄,单位毫秒)内的可获取的缓存位置。如果设置为 0, 说明设备不能使用一个缓存位置 }); }) } /** * 关闭GPS位置监听 * @param {Function} callCompletion 完成回到callCompletion() */ function plusGPSListenerOff(callCompletion) { if (watchGpsId) { plus.geolocation.clearWatch(watchGpsId); watchGpsId = undefined; if (callCompletion) callCompletion('GPS定位关闭成功!'); } else { if (callCompletion) callCompletion('GPS定位尚未开启!'); } }