【发布时间】:2016-05-26 01:30:14
【问题描述】:
大家好,我正在开发一个脚本来在具有自己功能的平台中显示当前速度,但是对于当前速度,我总是得到 0,并且第一个经度和纬度与第二个相同,有人可以吗请帮我找出问题所在,看看算法是否正确
function save1() {
js.saveData("value1", js.call('api.location.getLatitude()', {}));
js.saveData("value2", js.call('api.location.getLongitude()', {}));
}
function save2(){
js.saveData("value3", js.call('api.location.getLatitude()', {}));
js.saveData("value4", js.call('api.location.getLongitude()', {}));
}
function repeate2() {
js.callRepeatedly("save1()", 1000);
js.callRepeatedly("save2()", 2000);
}
function setintext() {
save1();
save2();
repeate2();
//js.alert("geted");
var lat1 = js.getData("value1");
var long1 = js.getData("value2");
var lat2 = js.getData("value3");
var long2 = js.getData("value4");
js.setProperty('Home.Text_1', 'text', lat1);
js.setProperty('Home.Text_2', 'text', long1);
js.setProperty('Home.Text_3', 'text', lat2);
js.setProperty('Home.Text_4', 'text', long2);
}
function distance(lat1, long1, lat2, long2) {
setintext();
var R = 6371; // km (change this constant to get miles)
var dLat = (lat2 - lat1) * Math.PI / 180;
var dLon = (long2 - long1) * Math.PI / 180;
var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
Math.sin(dLon / 2) * Math.sin(dLon / 2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
var d = R * c;
var dist = 0;
dist = Math.round(d);
var vitesse = dist / 3600000;
js.setProperty('Home.Text_x', 'text', vitesse + "km/h");
}
【问题讨论】:
-
由于您在 setintext() 中同时将两组坐标(纬度/经度)保存到本地存储...这不是逻辑值相同吗?我认为您应该存储 set1... 并稍等片刻以保存第二组。还要考虑传输延迟!我不知道数据是从哪里来的……但它真的是“实时”的吗?
-
您在不改变位置的情况下一个接一个地获取值。尝试在
save1()和save2()之间更改位置 -
Louys Patrice Bessette 是的,我正在同时设置它们,但是 save1() 应该每 1 秒执行一次, save2() 应该每 2 秒执行一次,对吗?是的实时精确坐标
-
Eli Sadoff 我在一辆高速的汽车上测试它,但不起作用
标签: javascript performance math gps latitude-longitude