位置(GPS)返回错误的值

时间:2016-07-11 10:17:37

标签: android lua gps corona

我正在学习Corona SDK,用于在我的带有Android 5.1.1的Xperia Z1小型机上编写一些私人使用的有用内容

我偶然发现了位置功能并试了一下(参考和示例提供了大量帮助)

纬度,经度和准确度,工作得很好。坐标非常接近我的实际位置(约10米),它们在给定精度(31.5米)内。但是,海拔高度,速度和方向都不是正确的。

当我启动应用程序时,海拔高度是"对" (可能是50米太高)起初,但几秒后它会切换到零并保持在那里。当我"最小化"短暂的申请并再次重新开放。

即使我四处走动,速度和方向也始终保持为零。

这是"我的" (大多数是复制的)代码:

local display = require ("display")

local t0 = display.newText("Latitude", 100, 50, native.systemFont, 16)
local t1 = display.newText("Longitude", 100, 100, native.systemFont, 16)
local t2 = display.newText("Altitude", 100, 150, native.systemFont, 16)
local t3 = display.newText("Accuracy", 100, 200, native.systemFont, 16)
local t4 = display.newText("Speed", 100, 250, native.systemFont, 16)
local t5 = display.newText("Direction", 100, 300, native.systemFont, 16)

local latitude = display.newText( "-", 200, 50, native.systemFont, 16 )
local longitude = display.newText( "-", 200, 100, native.systemFont, 16 )
local altitude = display.newText( "-", 200, 150, native.systemFont, 16 )
local accuracy = display.newText( "-", 200, 200, native.systemFont, 16 )
local speed = display.newText( "-", 200, 250, native.systemFont, 16 )
local direction = display.newText( "-", 200, 300, native.systemFont, 16 )

local locationHandler = function( event )

    local latitudeText = string.format( '%.4f', event.latitude )
    latitude.text = latitudeText

    local longitudeText = string.format( '%.4f', event.longitude )
    longitude.text = longitudeText

    local altitudeText = string.format( '%.3f', event.altitude )
    altitude.text = altitudeText

    local accuracyText = string.format( '%.3f', event.accuracy )
    accuracy.text = accuracyText

    local speedText = string.format( '%.3f', event.speed )
    speed.text = speedText

    local directionText = string.format( '%.3f', event.direction )
    direction.text = directionText

end

Runtime:addEventListener( "location", locationHandler )

谢谢!

1 个答案:

答案 0 :(得分:0)

一切似乎都是对的。 1-这种类型的GPS的海拔高度不准确,50米的精确度很高。

2-你必须为方向工作添加方向监听器:

local directionHandler1 = function( event )
        local magneticText = string.format( '%.1f', event.magnetic )
        magnetic.text = magneticText
end

    Runtime:addEventListener( "heading", directionHandler1 )

你需要这三个:

Runtime:addEventListener( "location", locationHandler1 )
Runtime:addEventListener( "heading", directionHandler1 )
Runtime:addEventListener('accelerometer', processor)