query("SELECT id, nama_kk, penghasilan, jumlah_tanggungan, ST_AsGeoJSON(geom) as geojson FROM warga_miskin"); $wargaDalamRadius = []; while ($row = $stmt->fetch()) { $geom = json_decode($row['geojson'], true); // GeoJSON Point format: [Longitude, Latitude] $wargaLon = $geom['coordinates'][0]; $wargaLat = $geom['coordinates'][1]; // Hitung jarak dengan Haversine $jarak = self::haversineDistance($pusatLat, $pusatLon, $wargaLat, $wargaLon); if ($jarak <= $radiusKm) { $wargaDalamRadius[] = [ 'id' => $row['id'], 'nama_kk' => $row['nama_kk'], 'penghasilan' => $row['penghasilan'], 'jumlah_tanggungan' => $row['jumlah_tanggungan'], 'jarak_km' => round($jarak, 2), 'geometry' => $geom ]; } } // Urutkan berdasarkan jarak terdekat usort($wargaDalamRadius, function($a, $b) { return $a['jarak_km'] <=> $b['jarak_km']; }); return $wargaDalamRadius; } } ?>