$sql = "SELECT *, ( 6371 * acos( cos( radians(37) ) * cos( radians( ".$_GET["lat"]." ) ) * cos( radians( ".$_GET["lng"]." ) - radians(-122) ) + sin( radians(37) ) * sin( radians( ".$_GET["lat"]." ) ) ) ) AS distance FROM markers HAVING distance < 0.5 ORDER BY distance LIMIT 0 , 1";
Исходя из моего быстрого пробежки со смертью, я понял, что мой $ _GET не имеет смысла относительно того, что он делает. Оригинальная формула такая
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
Я не могу найти хорошие учебники о том, как это реализовать. Мне просто нужно знать, где его поставить! Моя широта и долгота ... в операторе sql, чтобы он мог вычислять IF вокруг друг друга для группировки.
Это руководство Google, из которого я получил код.
И члены ответят на проблему .. Мне кажется, что вряд ли есть объяснение, как использовать эту формулу в sql ..
ОБНОВЛЕНИЕ
Я не имею в виду bash. Я знаю, они объяснили это довольно очевидно, мне просто не хватает способности понять это по какой-то причине. Много ссылок извинений.
ОБНОВЛЕНИЕ
Все еще возникают проблемы. Я попытался настроить код как таковой. Это делается правильно? Потому что я вставляю две одинаковые координаты геолокации, и они должны группироваться, но не совпадают.
</p>
<pre><code><?php
$lat1=$_GET["lat"];
$lng1=$_GET["lng"];
$lat2=$grouping[$counter][1];
$lng2=$grouping[$counter][2];
$sql = "SELECT id, status, ( 6371 * acos( cos( radians($lat1) ) * cos( radians( $lat2 ) )
* cos( radians( $lng2 ) - radians($lng1) ) + sin( radians($lat1) ) * sin(radians($lat2)) ) ) AS distance FROM markers HAVING distance < 0.5 ORDER BY distance LIMIT 0 , 2;";
?>