Skip to content

Instantly share code, notes, and snippets.

@diego3g
Created July 17, 2018 13:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save diego3g/32ec090ec021816dd650a9d99f0b2bb8 to your computer and use it in GitHub Desktop.
Save diego3g/32ec090ec021816dd650a9d99f0b2bb8 to your computer and use it in GitHub Desktop.
static scopeNearBy (query, latitude, longitude, distance) {
const haversine = `(6371 * acos(cos(radians(${latitude}))
* cos(radians(latitude))
* cos(radians(longitude)
- radians(${longitude}))
+ sin(radians(${latitude}))
* sin(radians(latitude))))`
return query
.select('*', Database.raw(`${haversine} as distance`))
.whereRaw(`${haversine} < ${distance}`)
}
@fabiuz
Copy link

fabiuz commented Aug 9, 2018

As linhas 3, 4 e 7, as variáveis latitude e longitude não estão circundadas por ${ }.
Parece que há um bug neste código, pois, eu usei console.log(haversine) e me retornou isto:
(6371 * acos(cos(radians(-27.200768))
* cos(radians(latitude))
* cos(radians(longitude)
- radians(-49.624018))
+ sin(radians(-27.200768))
* sin(radians(latitude))))
Então, quando, eu coloco as variáveis latitude e longitude entre ${ }, conforme o código abaixo:
(6371 * acos(cos(radians(${latitude})) * cos(radians(${latitude})) * cos(radians(${longitude}) - radians(${longitude})) + sin(radians(${latitude})) * sin(radians(${latitude}))))
Ao realizar console.log(haversine), retorna isto:
(6371 * acos(cos(radians(-27.200768))
* cos(radians(-27.200768))
* cos(radians(-49.624018)
- radians(-49.624018))
+ sin(radians(-27.200768))
* sin(radians(-27.200768))))

Creio eu, que as linhas 3, 4 e 7 estão incorretas.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment