如何使用AIR Geolocation API获取精确的GPS位置?

时间:2013-09-03 03:21:06

标签: android air gps

如何获得精确的纬度和经度?我只得到整数。根据我的理解,为了达到仪表我需要降到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;

}

2 个答案:

答案 0 :(得分: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;

}

答案 1 :(得分:0)

确保您的变量(gpsLat1gpsLon1gpsHeading等)属于Number类型,而不是uint或{{1} }。无符号整数和整数仅允许整数,而在大多数其他语言中,Number相当于int(并且允许非常大的值)。如果将小数保存为整数,则会四舍五入/舍入(我不记得哪个),这听起来与您遇到的问题完全相同。

或者,API受您正在测试的硬件的限制。如果硬件仅返回GPS坐标的某个值,则AIR不能再精确。可能的问题不是问题,因为整个lat长点距离可以是英里和英里,这意味着任何具有GPS芯片不准确性的设备都是绝对无用的。