'lat dan lng wajib']); exit; } $url = "https://nominatim.openstreetmap.org/reverse?format=json&lat={$lat}&lon={$lng}&addressdetails=1&accept-language=id"; $opts = ['http' => ['header' => "User-Agent: WebGIS-PovertyMap/2.0 (https://github.com)\r\n", 'timeout' => 10]]; $context = stream_context_create($opts); $result = @file_get_contents($url, false, $context); if ($result === false) { echo json_encode(['display_name' => "{$lat}, {$lng}", 'fallback' => true]); exit; } $data = json_decode($result, true); $addr = $data['display_name'] ?? "{$lat}, {$lng}"; // Ekstrak komponen alamat $components = $data['address'] ?? []; $kelurahan = $components['suburb'] ?? $components['village'] ?? $components['neighbourhood'] ?? ''; $kecamatan = $components['city_district'] ?? $components['district'] ?? ''; $kota = $components['city'] ?? $components['town'] ?? $components['county'] ?? ''; echo json_encode([ 'display_name' => $addr, 'kelurahan' => $kelurahan, 'kecamatan' => $kecamatan, 'kota' => $kota, 'lat' => $lat, 'lng' => $lng, ]);