参考问题:http://ask.dcloud.net.cn/question/10078
刚开始学习html5+App 要实现定时发送位置信息功能,看了官方示例如下,确实简单明了
官网示例
<!DOCTYPE html>
<html>****
<head>
<meta charset="utf-8">
<title>Geolocation Example</title>
<script type="text/javascript" >
// 扩展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 );
} );
}
</script>
</head>
<body >
</body>
</html>
不过问题来了,现在要自动隔段时间就发送一下位置了,采用上面的方法getPosBaidu,加上下面这句,期间可能遇到其他问题plus未定义啊什么的,不过不是关键
setInterval('getPosBaidu()', 10000);
调试结果:
执行了一次getPosBaidu
然后就over了
原因可能是阻塞啊 什么的,具体我也不太懂了,就觉得跟setInterval有关
怎么办?
看了一堆dcloud定位相关问题的贴子,特别混乱。
总结下可能的方法,
1、自己开发5+sdk插件替换getCurrentPosition
2、Native.js 调用本地替换getCurrentPosition
3、换掉setInterval 用别的方法定时触发
4、曲线利用 plus.geolocation.watchPosition
结果当然是1,2太复杂,还没动。
4 方法,看了半天,watchPosition 这个方法也没太懂,继续setInterval 只用plus.geolocation.watchPosition 直接取代getCurrentPosition :开始监视触发一次,然后清楚监视就是一次啦,不过依然没用。
3方法目前算是成功了。
有其他方法的同学,请告知,毕竟这个办法也太曲线了。
html5+ 官方需要继续改进,要加快进度。 控制变量法:自己做到最好,历史才能选择究竟谁才是未来的主流,希望html5+应用火起来。
End。。。
9 个评论
要回复文章请先登录或注册
5***@qq.com
1***@qq.com
1***@qq.com
1***@qq.com
1***@qq.com
5***@qq.com
1***@qq.com
桥西下
最坏是单飞