我已经创建了一个演示PhoneGap应用程序,用于检查加速度,指南针和地理位置并向用户显示这些信息。应用程序使用PhoneGap Build编译。PhoneGap地理位置对象不喜欢四舍五入吗?
我用简单的toFixed(n)
和一些字符串来取整值并在其后面添加一些单位。这在加速和指南针的情况下非常有用。出于某种原因超出我的想象力,这在地理定位情况下失败(至少在Galaxy Nexus/Android 4.3上)。
我用这样的功能:
function onGeolocationSuccess(position)
{
console.log(position);
var coords = position.coords;
coords.latitude = coords.latitude.toFixed(6);
coords.longitude = coords.longitude.toFixed(6);
coords.altitude = coords.altitude.toFixed(2) + ' m';
coords.accuracy = coords.accuracy.toFixed(6) + ' m';
coords.altitudeAccuracy = coords.altitudeAccuracy.toFixed(2) + ' m';
coords.heading = coords.heading.toFixed(2) + '\u00b0';
coords.speed = coords.speed.toFixed(2) + ' m/s';
var geoText = 'Longitude is ' + coords.longitude + '.';
geoText = geoText + 'Latitude is ' + coords.latitude + '.';
geoText = geoText + 'Accuracy is ' + coords.accuracy + '.';
geoText = geoText + 'Altitude is ' + coords.altitude + '.';
geoText = geoText + 'Altitude Accuracy is ' + coords.altitudeAccuracy + '.';
geoText = geoText + 'Heading is ' + coords.heading + '.';
geoText = geoText + 'Speed is ' + coords.speed + '.';
$('#positionText').html(geoText);
}
它是作为success
回调的PhoneGap的navigator.geolocation.watchPosition
的通过。
函数触发,整个位置对象被写入到控制台,这就是全部。如果var coords = position.coords;
和var geoText = 'Longitude is ' + coords.longitude + '.';
之间的行是未注释,则函数执行死于其间的某处,行$('#positionText').html(geoText);
未被执行,并且positionText
div未被正确更新。
如果我将这七条“舍入”行注释掉,所有行都很好,div正在更新。同样的四舍五入就像加速和罗盘对象中的魅力一样,这使得这更加奇怪。
有人可以告诉我,我错过了什么?为什么PhoneGap地理定位对象不喜欢四舍五入,而指南针和加速对象可以很好地使用它?您的位置对象的
是你的立场对象回来空任何一部分?我把你的代码中的jsfiddle [这里](http://jsfiddle.net/andrewlively/LW4Uz/1/),玩它一点点,并得到它的工作就好了。它不仅打破试图在一个空值做.toFixed()的时候,它不是与PhoneGap的 –
一个问题,看来,你得到了点(那么明显,但:|!)。请把这个评论重新定义为全尺寸的答案,所以我可以接受它并授予你的工作,并带有一些重要的意义。 – trejder