Coordinates.speed始终返回为' null'

时间:2018-01-26 16:27:34

标签: javascript three.js null geolocation gps

我正在尝试开发一种系统,其中背景上的粒子根据设备的速度改变其速度(例如,当您在汽车或公共汽车中时)。为此,Geolocation API听起来很棒,具有Coordinates.speed属性。

问题是我的速度总是以 null 的形式返回。从我所读过的内容来看,它应该是与设备相关的问题,但我尝试使用Nexus 6p,Mac,三星平板电脑和iPad,在控制台中始终使用相同的空答案。来自API的速度:null"。

您是否知道代码无效的原因?以下是页面和脚本: https://marceloscoelho.github.io



(...)
<script>
        //getting the user location
        var userSpeed = null;
        function getLocation() {
          setInterval(function(){
        navigator.geolocation.watchPosition(showPosition);          }, 500);
        }
        
        function render() {
          if (userSpeed == null) {
            userSpeed = 0.00005;
          }
          console.log("Speed used :" + userSpeed);
          percentage += userSpeed; //Speed of the tunnel
          var p1 = path.getPointAt(percentage % 1);
          var p2 = path.getPointAt((percentage + 0.01) % 1);
          camera.position.set(p1.x, p1.y, p1.z);
          camera.lookAt(p2);
          //Render the scene
          renderer.render(scene, camera);
          requestAnimationFrame(render);
        }
        requestAnimationFrame(render);
        function showPosition(position){
          var speed = position.coords.speed;
          console.log("Speed from API: " + speed);
          // if too big
          speed = speed / 1000000;
          userSpeed = speed;
        }
</script>
&#13;
&#13;
&#13;

谢谢!

1 个答案:

答案 0 :(得分:0)

在我知道类似高度的任何浏览器中都没有实现速度。当你有多个位置时,你当然可以通过启发式方法估计速度,但在灯光等处识别停止并不容易或准确。

有关完整示例,请参阅Brotkrumen