我正在尝试开发一种系统,其中背景上的粒子根据设备的速度改变其速度(例如,当您在汽车或公共汽车中时)。为此,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;
谢谢!
答案 0 :(得分:0)
在我知道类似高度的任何浏览器中都没有实现速度。当你有多个位置时,你当然可以通过启发式方法估计速度,但在灯光等处识别停止并不容易或准确。
有关完整示例,请参阅Brotkrumen