【问题标题】:Location (GPS) returning wrong values位置 (GPS) 返回错误值
【发布时间】:2016-11-13 06:05:03
【问题描述】:

我正在学习 Corona SDK,以便在装有 Android 5.1.1 的 Xperia Z1 compact 上编写一些有用的东西供私人使用

我偶然发现了定位函数并试了一下(在参考和示例的帮助下)

纬度,经度和准确性,工作得很好。坐标非常接近我的实际位置(大约 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 )

谢谢!

【问题讨论】:

    标签: android lua gps coronasdk


    【解决方案1】:

    看起来一切正常。 1-这种gps的高度不会很准确,50m的精度很好。

    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)
    

    【讨论】:

    • 我的实际高度应该在 1000 米左右,但它返回的值在 1040 左右,但这是可以接受的......不过几秒钟后它变为 0......
    • 正如我所提到的,您需要特殊的 GPS 装置来获得准确的高度。手持或移动 gps 仅给您最小 5m 的纬度和经度误差。在现实生活中没有人将它用于海拔高度。
    猜你喜欢
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多