PHP gibt den NaN-Wert zurück
P粉914731066
P粉914731066 2024-03-25 17:22:54
0
2
686

Ich habe eine Funktion, die den Abstand zwischen zwei GPS-Koordinaten berechnet. Dann hole ich alle Koordinaten aus der Datenbank und durchlaufe sie alle, um den Abstand zwischen der aktuellen Koordinate und der vorherigen Koordinate zu ermitteln, und füge ihn dann einem Array für das spezifische GPS-Gerät hinzu. Aus irgendeinem Grund wird NaN zurückgegeben. Ich habe versucht, es in ein Double und eine Ganzzahl umzuwandeln und die Zahl zu runden.

Das ist mein PHP-Code:

function distance($lat1, $lon1, $lat2, $lon2) {
      $lat1 = round($lat1, 3);
      $lon1 = round($lon1, 3);
      $lat2 = round($lat2, 3);
      $lon2 = round($lon2, 3);
      $theta = $lon1 - $lon2; 
      $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); 
      $dist = acos($dist); 
      $dist = rad2deg($dist); 
      $miles = $dist * 60 * 1.1515;
      if($miles < 0) $miles = $miles * -1;
      return ($miles * 1.609344);  
}
$this->db->query("SELECT * FROM `gps_loc` WHERE `imeiN`='" . $sql . "' AND `updatetime`>=$timeLimit ORDER BY `_id` DESC");
    $dist = array();
    $dist2 = array();
    while($row = $this->db->getResults()) {
        $dist2[$row['imeiN']] = 0;
        $dist[$row['imeiN']][]["lat"] = $row['lat'];
        $dist[$row['imeiN']][count($dist[$row['imeiN']]) - 1]["lng"] = $row['lon'];
    }

    foreach($dist as $key=>$d) {
        $a = 0;
        $b = 0;
        foreach($dist[$key] as $n) {
            if($a > 0) {
                $dist2[$key] += $this->distance($n['lat'], $n['lng'], $dist[$key][$a - 1]['lat'], $dist[$key][$a - 1]['lng']);
            }
            $a++;
        }

    }
    echo json_encode($dist2);

P粉914731066
P粉914731066

Antworte allen(2)
P粉373990857

sin()cos() 的范围在 -1 和 1 之间。因此,在第一次计算 $dist 时结果范围是 -2 到 2。然后将其传递给 acos(),其参数必须介于 -1 和 1 之间。例如,acos(2) 给出 NaN 。那里的其他所有内容也给出 NaN。

我不确定公式应该是什么,但这就是你的 NaN 的来源。仔细检查你的三角函数。

P粉005134685

您从数据库中提取的值可能是字符串,这会导致此问题。

您可能还想查看 Kolink 在他的帖子中提出的问题。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage