Problem med geolocation (API)

Tags:    php mysql pdo geolocation

Hej jeg er ved at lave et API til mobil, hvor den skal trække users ud der er i nærheden af den user som den får fra api_key i databasen.

Men jeg har aldrig prøvet noget med geo location før, og fandt den query på stackoverflow mener jeg.

Har lavet et billede af strukturen af min database:

https://drive.google.com/file/d/0B5meE8ab41mMWktOQW5zYUtoNWs/view

Og min function er her:

Fold kodeboks ind/udPHP kode 




6 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Den query du har fundet ser ud til at beregne resultatet i mil. Du skal finde en anden konstant hvis du vil have km. Querien finder alt indenfor 25mil af et sted tæt på San Francisco (latitude 37, longitude -122). Der skal du bruge din brugers lokation i stedet.

Jeg lavet en sqlfiddle med det grundlæggende: http://sqlfiddle.com/#!9/b77c5b/30

Blot bruger id'er, samt lat- og longitudes. I querien udtrækkes først lokation for brugeren med id '3' (dette er din uid parameter). Dernæst køres querien som udtrækker alt data (her skal du nok skære noget væk), samt distance. Hvis distance er under 200 mil, og det ikke er selve brugeren vi søger i nærheden af beholdes rækken. Udover at parameterise uid som du allerede har, kan det være du også vil have afstanden som parameter.

Jeg ved ikke om PDO vil give dig rækker fra den første statement. Hvis den gør, så kan det være du skal ignore den første række.

Ved ikke om det var det du ledte efter? For i dit spørgsmål stiller du ikke noget spørgsmål, men konstaterer blot din nuværende situation uden at nævne noget problem. Så jeg ved faktisk ikke hvad stopklodsen er?



først stor ros for at du har valgt PDO som API mod din mysql database.


Har lavet et billede af strukturen af min database:

kan du ikke lave et sql dump af din test database, så vi ikke selv skal oprette den structur du har afbilledet, samt smide nogle test data i databasen. (tidsbesparende for os)


fandt den query på stackoverflow mener jeg.

http://stackoverflow.com/questions/36515413/php-mysql-geo-location-from-users-near-user-logged-in
nåå det er iøvrigt dig selv (ingen svar pt)

her er nogle andre hvor formlen også vises, så det må være en af disse du har set
https://developers.google.com/maps/articles/phpsqlsearch_v3#creating-the-table
http://stackoverflow.com/questions/574691/mysql-great-circle-distance-haversine-formula
http://stackoverflow.com/questions/28815904/mysql-like-query-not-working


hvordan kalder du din metode (indkapslede function)

hvordan henter du brugerens nuværende geo-location ?? (formoder js)

opdateres brugerens geo-location løbende i databasen ??

hvilke HTML / JS arbejder den sammen med ??

https://www.google.dk/search?q=geolocation+google+maps+php
https://www.google.dk/search?q=geolocation+google+maps+js
ref https://www.google.dk/search?q=html5+geolocation+google+map
https://developers.google.com/maps/documentation/javascript/examples/map-geolocation




Hej Ronny

Kan ikke lige se hvorfor jeg skal lave et dump af strukturen, da det ikke var mit spørgsmål men okay her er den:

Fold kodeboks ind/udKode 


Og nej det var ikke fra min egen stackoverflow jeg fik den fra, det var en anden.

Min metode kalder jeg her (Lavet med Slim Framework):

Fold kodeboks ind/udPHP kode 


Og brugernes location opdateres via den android app jeg er ved at lave, så ja det er java.



Indlæg senest redigeret d. 11.04.2016 19:54 af Bruger #15533

Kan ikke lige se hvorfor jeg skal lave et dump af strukturen, da det ikke var mit spørgsmål men okay her er

det var for at teste noget code før jeg svarede.


Og nej det var ikke fra min egen stackoverflow jeg fik den fra, det var en anden.

det opdagede jeg da jeg læse den derfor skrev jeg også

nåå det er iøvrigt dig selv (ingen svar pt)

her er nogle andre hvor formlen også vises, så det må være en af disse du har set
...



Min metode kalder jeg her (Lavet med Slim Framework):

kender desværrer ikke det Framework


Og brugernes location opdateres via den android app jeg er ved at lave, så ja det er java.

jeg havde forvendtet javascript og ikke JAVA


i javascript kunne du kigge på disse link
https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/Using_geolocation
http://www.w3schools.com/html/html5_geolocation.asp


i JAVA kig på dette link
http://developer.android.com/reference/android/location/Location.html
ref https://www.google.dk/search?q=java+code+to+get+location+from+latitude+and+longitude
http://stackoverflow.com/questions/11202934/get-latitude-longitude-from-given-address-name-not-geocoder
http://www.santhoshreddymandadi.com/java/java-program-to-get-latitude-longitude-points.html



jeg har ikke rodet med JAVA siden 1999 hvor jeg legede kort med det, så her står jeg af.
jeg har ikke lige planer om at rode med det igen, da jeg coder til en browser
http://www.computerworld.dk/art/236160/oracle-skrotter-forhadt-java-plugin-efter-mange-r-som-sikkerhedstrussel



http://www.programcreek.com/2014/02/java-vs-javascript/
http://xkr.us/js/java




Har fået det til at virke nu, med den her query:

Fold kodeboks ind/udPHP kode 


Og min index som printer det ud:

Fold kodeboks ind/udPHP kode 


Så nu mangler jeg bare når den echo array ud at den beregner distance til Kilometer fra den første row som den spytter ud, ved ikke om du ved noget om hvordan man gør det?

Ind til vidre ser det sådan her ud:

REST API billede




Indlæg senest redigeret d. 12.04.2016 15:28 af Bruger #15533
For at få i km ændres Jordens radius fra 3959 mil til 6371 km.

Fiddlen gider ikke at loade længere, men her er det grundlæggende.

Fold kodeboks ind/udSQL kode 


Jeg har også byttet rundt på din ORDER BY rækkefølge. Siden id kommer først vil den primært sortere efter dem, og kun bruge afstand hvis to id'er er den samme. Men id'erne er vel unikke, og vil aldrig være den samme, så afstand vil aldrig blive brugt i sorteringen. Jeg går ud fra intentionen er at der skal sorteres efter afstand først, og id bruges some "tie-breaker".




Indlæg senest redigeret d. 12.04.2016 17:24 af Bruger #14645
t