2016-04-07 11 views
1

Ich arbeite mit Location Based-Anwendung mit Corona SDK. Ich habe Bild und Bild Eckwert (Lat - Long). Verwenden Sie den folgenden Code, um XY-Pixel zu finden. Der Standort-Listener funktioniert jedoch nicht ordnungsgemäß.In Android-Standort-Listener wird nach der ersten Ausführung ausgelöst. Ich habe einen genauen Lat-lon Wert alle 1 Meter.Standort Hörer Corona SDK

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

Können Sie weitere Details hinzufügen? der Zuhörer. – JLONG

+0

Also, wenn Sie meinen, der Hörer funktioniert nicht, ist es nicht korrekt? oder die GPS-Funktion selbst funktioniert nicht? – JLONG

+0

bekomme ich keinen genauen Wert.In der gleichen Stelle bekomme ich diff-Wert. – AndroidUser

Antwort

2

Ich glaube nicht, dass Sie die Koordinaten richtig behandeln. Schauen Sie sich das Beispiel, in dem die Koordinaten umgewandelt werden und die App funktioniert gut:

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) 

Aktivieren Sie diese App, wenn es ist, was Sie versuchen, was ich zu tun können Sie die Codes geben: https://play.google.com/store/apps/details?id=com.jorc.amirfarazmand.GPS&hl=en