I am working with location based application using Corona SDK. I have image and image corner value(Lat - Long). Using the code below to find XY pixels. But location listener is not working properly.In android location listener fires after first execution. I have got accurate lat-lon value every 1 meter.
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 )
I dont think you are handling the coordinates properly. Look at this example where the coordinates are converted and the app is working fine:
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 )
Check this app, if it is what you are trying to do I can give you the codes: https://play.google.com/store/apps/details?id=com.jorc.amirfarazmand.GPS&hl=en