定位(GPS)返回错误数值

我刚开始学习使用Corona SDK编写私人使用的一些有用的东西,我的手机是Xperia Z1 Compact,使用Android 5.1.1系统。

我试用了一些关于位置的函数,参考了很多例子才成功。

我的纬度、经度和精度都非常准确,与我的实际位置非常接近(约10米),并且符合给定的精度(31.5米)。然而,高度、速度和方向并不准确。

当我启动应用程序时,高度起初“正确”(可能高出50米),但在几秒钟后就会变为零,并保持在那里。即使我短暂地“最小化”应用程序,然后重新打开,高度也会出现同样的情况。

速度和方向一直为零,即使我四处移动。

这是我的(大部分是复制)代码:

local display = require("display")

local t0 = display.newText("纬度", 100, 50, native.systemFont, 16)
local t1 = display.newText("经度", 100, 100, native.systemFont, 16)
local t2 = display.newText("高度", 100, 150, native.systemFont, 16)
local t3 = display.newText("精度", 100, 200, native.systemFont, 16)
local t4 = display.newText("速度", 100, 250, native.systemFont, 16)
local t5 = display.newText("方向", 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)

谢谢!

点赞
用户3041972
用户3041972

一切看起来都没问题。

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)
2016-07-11 10:29:56