91³Ô¹ÏÍø

Watch CBS News

Charges filed in San Francisco multi-vehicle crash that killed 1, injured several others in January

The driver of a Tesla is being charged in connection with multiple hit-and-run crashes in San Francisco in January that left one person dead and several others injured, the district attorney said Monday. 

The incident happened on Jan. 19 in the area of 6th and Harrison Streets. The San Francisco Police Department said a black Tesla sedan hit at least six vehicles, killing 1 person and a dog and injuring other vehicle occupants, including one who suffered life-threatening injuries.

Moments before the crash, the California Highway Patrol said the Tesla driver hit four cars on northbound Interstate Highway 280 at the 6th Street offramp, about two blocks south of the other crashes. Only minor injuries were reported, the CHP said. 

On Monday, District Attorney Brooke Jenkins said the driver, identified as 67-year-old Jia Lin Zheng of Honolulu, Hawaii, would be charged with vehicular manslaughter, reckless driving, and three counts of hit-and-run. Zheng was arrested after being treated for his injuries at a hospital.

Jenkins said fatal crash investigations take a significant amount of time before decisions on charges can be made.

Watch: SF District Attorney remarks on January hit-and-run spree that killed 1 02:12

"Just like similar cases that we've had in the city recently, one being the tragic death of the family in West Portal that was killed by a driver, these cases take a tremendous amount of resources to investigate on the front end," said Jenkins. "We have to do vehicle inspections, we have to do physical examinations of the drivers to ensure that there were no health episodes that caused it, that there was no vehicle malfunction, and interview a whole host of witnesses and experts who can help us recreate the traffic collision and ensure that we do have a driver that is responsible and not that there was some other cause of this crash."  

One of the vehicles hit was an unoccupied Waymo robotaxi. A Waymo spokesperson told CBS Bay Area that data from the vehicle indicated a collision with a vehicle traveling an estimated 98 mph.

At his arraignment on Monday, Zheng was released on his own recognizance and ordered not to drive and to surrender his driver's license, the DA's Office said. His next court date is Nov. 7 for a prehearing conference. 

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=50747257b890e014813016b79ece0fb2'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });