我正在使用Corona SDK处理基于位置的应用程序。 我有图像和图像角值(Lat - Long)。使用下面的代码查找XY像素。但位置监听器无法正常工作。在android位置监听器首次执行后触发。我每1米就有一个准确的纬度值。
local function GetPixelCoordinatesInBounds( width,height,lat,lon )
minLat = 12.9837
maxLat = 12.9850
MAP_HEIGHT = W
minLon = 80.24662
maxLon = 80.24666
MAP_WIDTH = H-35
x = ((lon - minLon) / (maxLon - minLon)) * (MAP_WIDTH - 1)
y = ((lat - minLat) / (maxLat - minLat)) * (MAP_HEIGHT - 1)
end
local function locationHandler(event)
if ( event.errorCode ) then
native.showAlert( "GPS Location Error", event.errorMessage, {"OK"} )
else
GetPixelCoordinatesInBounds(ImageWidth, ImageHeight, event.latitude, event.longitude)
end
Runtime:addEventListener( "location", locationHandler )
答案 0 :(得分:2)
我不认为你正确处理坐标。看看这个转换坐标并且应用程序工作正常的示例:
function locationHandler(event)
-- Check for error (user may have turned off Location Services)
if event.errorCode then
title = display.newText( "errorgps", 200, 150, "Verdana-Bold", 20 )
--print( "Location error: " .. tostring( event.errorMessage ) )
else
ycor = string.format( '%.6f', event.latitude )
xcor = string.format( '%.6f', event.longitude )
accuracyText = string.format( '%.3f', event.accuracy )
end
mxl0 = 5
myl0 = 4
-- Specifically check here how you have to manipulate your local y coordinates
mxl = ((mxl0-xmin)/(xmax-xmin))*300+10
myl = -((myl0-ymin)/(ymax-ymin))*300+460
if mylocationi == 1 then mxl = ((mxl-zx[1])/(zx[2]-zx[1]))*300 end
if mylocationi == 1 then myl = ((myl-(zy[1]+zy[2])/2)/(zx[2]-zx[1]))*300+160 end
if mxl > 340 then mxl = 340 end
if myl > 460 then myl = 460 end
if mxl < 0 then mxl = 5 end
if myl < 160 then myl = 160 end
mylocation = display.newCircle( mxl, myl, 3 )
mylocation:setFillColor( 0,0,1 )
timer.performWithDelay( 1000, removecircle )
end
Runtime:addEventListener( "location", locationHandler )
检查此应用,如果您正在尝试这样做,我可以为您提供以下代码: https://play.google.com/store/apps/details?id=com.jorc.amirfarazmand.GPS&hl=en