海布里
海布里
  • 发布:2015-09-01 09:58
  • 更新:2017-05-05 10:19
  • 阅读:10651

h5+实时定位问题

分类:HTML5+

怎么才能实现没隔5秒钟上传一次地理位置信息?
<script type="text/javascript" >
function Leave(){
alert(1);
plus.geolocation.getCurrentPosition( function ( p ) {
alert( "Geolocation\nLatitude:" + p.coords.latitude + "\nLongitude:" + p.coords.longitude +'/'+ p.timestamp );
}, function ( e ) {
alert( "Geolocation error: " + e.message );
} ,{provider:'baidu'});

}

setInterval("Leave()", 5000);
</script>
</head>
<body >
<button onclick="Leave();">a</button>
</body>
</html>
上边这个代码每次只能执行一次,但是我把定位部分注掉只剩下alert(1);就可以每隔5秒弹框一次,请问问题出在哪里

2015-09-01 09:58 负责人:无 分享
已邀请:
DCloud_Android_ST

DCloud_Android_ST

如果你想监听位置变化可以使用watchPosition

  • 海布里 (作者)

    如果位置不变化我也需要每隔5秒上传一次位置信息怎么实现?

    2015-09-01 15:34

  • DCloud_Android_ST

    那就定时执行getCurrentPosition吧

    2015-09-01 15:57

  • 海布里 (作者)

    回复 DCloud_Android_ST:我用setInterval("Leave()", 5000);这个方法定时,但是每次有第一次能获取到位置信息

    2015-09-01 16:00

  • DCloud_Android_ST

    没有错误提示?

    2015-09-01 16:06

  • 海布里 (作者)

    回复 DCloud_Android_ST:并不报错,如果我不加入定位代码,方法本身是可以定时触发的,但是只要加了定位代码就不能定时触发了

    2015-09-01 16:16

  • 海布里 (作者)

    回复 DCloud_Android_ST:解决了 谢谢了

    2015-09-01 16:35

  • sidney

    回复 海布里:什么原因?

    2015-10-02 10:58

  • leah_huang

    @85727 求解

    2015-10-21 16:40

  • 海布里 (作者)

    回复 sidney:最后也没有发现是什么原因 在测试demo里面不行 放到项目里面莫名其妙的就好了

    2015-10-26 23:17

  • 海布里 (作者)

    回复 leah_huang:最后也没有发现是什么原因 在测试demo里面不行 放到项目里面莫名其妙的就好了

    2015-10-26 23:17

付权

付权 - C# ,Html5

遇到同样的问题,为什么这种情况就不能循环执行了呀?然后这个监视到底是个什么东西,描述的不是很清楚吧?我要一个小时上传一次位置呢,怎么做?

付权

付权 - C# ,Html5

mui.plusReady(function(){
plus.geolocation.getCurrentPosition(geoInf, function(e) {
outSet("获取百度定位位置信息失败:" + e.message);
}, {provider: 'baidu'});
});
改成这样也还是不执行,我一直怀疑就是plus这个东西没了啊

付权

付权 - C# ,Html5

setInterval('getPosBaidu()', 10000);
// 通过百度定位模块获取位置信息
function getPosBaidu() {
var myDate = new Date();
outSet("获取百度定位位置信息:" + myDate.toLocaleString());

                if (window.plus) {  

// plusReady();
} else {
document.addEventListener('plusready', plusReady, false);
}

// mui.plusReady(function() {
//
// });
}

            function plusReady()  
            {  
                    plus.geolocation.getCurrentPosition(geoInf, function(e) {  
                        outSet("获取百度定位位置信息失败:" + e.message);  
                    }, {  
                        enableHighAccuracy: 'true',  
                        provider: 'baidu'  
                    });  

            }  

这样的代码 ,不应该出问题的吧——无效!
试了一下alert("你好!"+plus.storage.getItem("UserName")); 放在这个位置替换plus.geolocation.getCurrentPosition()是可以执行的。
目前 setInterval();所调用的方法只要涉及到获取位置就是没用的。调试执行起来就是完全忽略存在,也不报错。求指导!!

付权

付权 - C# ,Html5

上面多了个注释,复制错了,去掉结果不变。

付权

付权 - C# ,Html5

请叫我天才!呃,其实我也才开始接触html5+App,不过下面这个方法居然可以用,不禁有点小喜悦。
一看就懂,可以替换解决当前setInterval('getPosBaidu()', 10000);getPosBaidu只执行一次问题。
setTimeout('Astart()', 10000);
function Astart()
{
getPosBaidu();
setTimeout('Bstart()', 10000);
}

function Bstart()
{
getPosBaidu();
setTimeout('Astart()', 10000);
}

damdmen

damdmen - 社交app创业中,求靠谱合伙人

我试了下 现在是可以的

我一开始也是不行后来发现,是setinterval( getCurrentPostion() , 10000 ) 里面没加引号

加上引号就正常了setinterval( 'getCurrentPostion()' , 10000 )

1***@qq.com

该问题目前已经被锁定, 无法添加新回复