我正在学习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 )
谢谢!
答案 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)