0

如何获得准确的纬度和经度?我只得到整数。据我了解,为了精确到米,我需要精确到小数点后 5 位。我试过水平和垂直精度,但它们与我的手机 GPS 读数不匹配。如何使用 Geolocation API 获得精确的 GPS 读数,精确到米?这是我的代码

var my_geo:Geolocation = new Geolocation();
my_geo.setRequestedUpdateInterval(2000);                
my_geo.addEventListener(GeolocationEvent.UPDATE, onGeoUpdate);

function onGeoUpdate(e:GeolocationEvent):void
{
    gpsLat1 = (e.latitude);
    gpsLon1 = (e.longitude);
    gpsHeading = (e.heading);
    gpsHorAcc = (e.horizontalAccuracy);
    gpsVerAcc = (e.verticalAccuracy);
    gpsCheck = 2;
my_txt.text = "My Latitude is "+ gpsLat1 + " and my Longitude is "+ gpsLon1 + " Bearing is " + gpsHeading+ " HorAcc "+ gpsHorAcc+ " VertAcc "+gpsVerAcc;

}
4

2 回答 2

0

尝试这个:

function onGeoUpdate(e:GeolocationEvent):void
{
    gpsLat1 = (e.latitude.toString());
    gpsLon1 = (e.longitude.toString());
    gpsHeading = (e.heading.toString());
    gpsHorAcc = (e.horizontalAccuracy.toString());
    gpsVerAcc = (e.verticalAccuracy.toString());
    gpsCheck = 2;
    my_txt.text = "My Latitude is "+ gpsLat1 + " and my Longitude is "+ gpsLon1 + " Bearing is " + gpsHeading+ " HorAcc "+ gpsHorAcc+ " VertAcc "+gpsVerAcc;

}
于 2013-09-04T04:05:16.137 回答
0

确保您的变量(gpsLat1, gpsLon1,gpsHeading等)是类型Number而不是 a uintor int。Unsigned Integers 和 Integers 只允许整数,而 Numberfloat在大多数其他语言中是等价的(并且也允许非常大的值)。如果将小数保存为整数,则会将其四舍五入/取整(我不记得是哪个),这听起来与您遇到的问题完全一样。

或者,API 受到您正在测试的硬件的限制。如果硬件只返回一个特定的 GPS 坐标值,AIR 就不能再精确了。很可能这不是问题,因为整个经纬度点的距离可能是英里和英里,这意味着任何具有 GPS 芯片不准确的设备都是绝对没用的。

于 2013-09-04T16:42:42.653 回答