Hai solo bisogno di utilizzare seguente query.
Ad esempio, è possibile immettere latitudine e longitudine 37 e -122 in gradi. E si desidera cercare utenti entro 25 miglia dalla latitudine e longitudine correnti.
SELECT item1, item2,
(3959 * acos(cos(radians(37))
* cos(radians(lat))
* cos(radians(lng)
- radians(-122))
+ sin(radians(37))
* sin(radians(lat))
)
) AS distance
FROM geocodeTable
HAVING distance < 25
ORDER BY distance LIMIT 0 , 20;
Se si desidera cercare la distanza in km, quindi sostituire 3959 con 6371 nella query precedente.
Si può anche fare questo tipo:
Seleziona tutto latitudine e la longitudine
Poi calcolare la distanza per ogni record.
Il processo precedente può essere eseguito con reindirizzamento multiplo.
Per l'ottimizzazione della query è possibile utilizzare la stored procedure.
E this può anche aiutare.
evviva per questo compagno –
Un piccolo avvertimento in quanto questo potrebbe sfuggire di mano se la tabella con punti aumenta di dimensioni. Finirai per fare i calcoli per ogni punto della tabella per ogni query. –
Per questo può essere utilizzata la procedura memorizzata. – Gaurav