Ejemplo n.º 1
1
/**
 * Матрица смежности
 *
 * @param array $poi   -  Массив точек с координатами
 * @param int   $count -  Кол-во POI для матрицы
 *
 * @return mixed
 * @internal param bool|int $count_poi
 */
function matrix($poi, $count = 21)
{
    for ($i = 0; $count >= $i; $i++) {
        if (array_key_exists($i, $poi)) {
            $matrix[$i] = [];
            // будущий массив
            for ($v = 0; $count >= $v; $v++) {
                // Сравниваем id poi, есть true, то задаем 0
                if ($poi[$i]['id'] == $poi[$v]['id']) {
                    $matrix[$i][$v] = 0;
                } else {
                    // Получаем радиант
                    $sqrt = rad($poi[$i]['coordinates'], $poi[$v]['coordinates']);
                    // Если радиант равен нулю, значит это первый граф
                    if ($sqrt == 0) {
                        $matrix[$i][$v] = 0;
                    } else {
                        $matrix[$i][$v] = round($sqrt, 10);
                    }
                }
            }
        }
        // Добавляем в массив максимальное значение в горизонтальной плоскости
        // полученное методом сложения array_sum
        if (isset($matrix[$i])) {
            $matrix[$i]['max'] = array_sum($matrix[$i]);
        }
    }
    // end for
    return $matrix;
}
Ejemplo n.º 2
1
     $img = "img/cinema.jpg";
 } else {
     if ($q == "bar") {
         $img = "img/bar.jpg";
     } else {
         if ($q == "restaurant") {
             $img = "img/restaurant.jpg";
         } else {
             $img = "img/library.jpg";
         }
     }
 }
 while ($row = mysqli_fetch_assoc($lieu)) {
     $dLat = rad($lat - $row['lat_lieu']);
     $dLng = rad($lng - $row['lng_lieu']);
     $a = Math . sin(dLat / 2) * Math . sin(dLat / 2) + Math . cos(rad($row['lat_lieu'])) * Math . cos(rad($lat)) * Math . sin(dLong / 2) * Math . sin(dLong / 2);
     $c = 2 * Math . atan2(Math . sqrt(a), Math . sqrt(1 - a));
     $distance = $R * $c;
     if ($distance < $rad) {
         echo '<div class="row">
                   <div class="media col-lg-10 col-lg-offset-1">
                     <div class="media-left">
                       <a href="#">
                         <img class="media-object" src="' . $img . '" alt="..." style="height: 60px;">
                       </a>
                     </div>
                     <div class="media-body">
                       <h3 class="media-heading"><a href="resultat3.php?q=' . $q . '&nom=' . $row['nom_lieu'] . '&adr=' . $row['adresse_lieu'] . '">' . $row['nom_lieu'] . '</a></h3>
                       <p>Distance: ' . $distance . ' mètres</p>
                       <p>Adresse:' . $row['adresse_lieu'] . '</p>
                     </div>
Ejemplo n.º 3
0
function GetDistance($lat1, $lng1, $lat2, $lng2)
{
    $EARTH_RADIUS = 6378.137;
    $radLat1 = rad($lat1);
    $radLat2 = rad($lat2);
    $a = $radLat1 - $radLat2;
    $b = rad($lng1) - rad($lng2);
    $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2)));
    $s = $s * $EARTH_RADIUS;
    $s = round($s * 10000) / 10000;
    return $s;
}
Ejemplo n.º 4
0
function getDistanceFromLatLonInKm($lat1, $lon1, $lat2, $lon2)
{
    $R = 6371;
    // Radius of the earth in km
    $dLat = rad($lat2 - $lat1);
    // deg2rad below
    $dLon = rad($lon2 - $lon1);
    $a = sin($dLat / 2) * sin($dLat / 2) + cos(rad($lat1)) * cos(rad($lat2)) * sin($dLon / 2) * sin($dLon / 2);
    $c = 2 * atan2(sqrt($a), sqrt(1 - $a));
    $d = $R * $c;
    // Distance in km
    return $d;
}
Ejemplo n.º 5
0
function distance($A, $B)
{
    $R = 6371;
    if (count($A) < 2 || count($B) < 2) {
        return -1;
    }
    list($x0, $y0) = rad($A);
    list($x1, $y1) = rad($B);
    if (!$x0 || !$y0 || !$x1 || !$y1) {
        return -1;
    }
    $alpha = abs(($y1 + $y0) / 2);
    $dAlpha = abs($y1 - $y0);
    $dBeta = abs($x1 - $x0);
    /*	print "****************\n";
    	print "(".$A['lon'].",".$A['lat'].") - (".$B['lon'].",".$B['lat'].")\n";
    	print "a: $alpha\n dA: $dAlpha\n dB: $dBeta\n";*/
    $res = $R * sqrt($dAlpha * $dAlpha + $dBeta * $dBeta * cos($alpha) * cos($alpha));
    //	print "Dist: ".$res."\n\n\n";
    return $res;
}