1<!DOCTYPE html> 2<html lang="en" data-theme="lotcheck" style="color-scheme: light"> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 <meta name="csrf-token" content="GT8IDHgZKzsHf38cIAYMYyZeLw1KJnUC4y044sSIUFFDTtoNn2Iy8yDX"> 7 <title>LotCheck â What Can You Build on Your Lot? Free ADU Tools</title> 8 9 <meta name="description" content="Free tools to check what you can build on any lot. ADU eligibility, setbacks, permits, and costs for 40 cities across CA, FL, and TX."> 10<link rel="canonical" href="https://lotcheck.ai"> 11 12 13<meta property="og:type" content="website"> 14<meta property="og:site_name" content="LotCheck"> 15<meta property="og:title" content="LotCheck â What Can You Build on Your Lot? Free ADU Tools"> 16<meta property="og:description" content="Free tools to check what you can build on any lot. ADU eligibility, setbacks, permits, and costs for 40 cities across CA, FL, and TX."> 17<meta property="og:url" content="https://lotcheck.ai"> 18<meta property="og:image" content="https://lotcheck.ai/images/og-default.png"> 19 20 21 22<meta name="twitter:card" content="summary_large_image"> 23<meta name="twitter:site" content="@lotcheck"> 24<meta name="twitter:title" content="LotCheck â What Can You Build on Your Lot? Free ADU Tools"> 25<meta name="twitter:description" content="Free tools to check what you can build on any lot. ADU eligibility, setbacks, permits, and costs for 40 cities across CA, FL, and TX."> 26<meta name="twitter:image" content="https://lotcheck.ai/images/og-default.png"> 27 28 29 30 31
31<script type="application/ld+json"> 32 {"@context":"https://schema.org","@type":"WebSite","description":"Discover what you can build on any lot. ADU eligibility, setback requirements, zoning rules, and development tools for properties across California, Florida, Texas, and more.","name":"LotCheck","potentialAction":{"@type":"SearchAction","query-input":"required name=search_term_string","target":{"@type":"EntryPoint","urlTemplate":"https://lotcheck.ai/search?q={search_term_string}"}},"url":"https://lotcheck.ai"} 33 </script>
33 34 35 36 37 <link rel="preconnect" href="https://fonts.googleapis.com"> 38 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 39 40 <link phx-track-static rel="stylesheet" href="/assets/css/app-b56c26e0dee2961861671e26b586d803.css?vsn=d"> 41 <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" crossorigin=""> 42
42<script src="https://unpkg.com/[email protected]/dist/leaflet.js" crossorigin=""></script>
42 43
43<script defer phx-track-static type="text/javascript" src="/assets/js/app-1e82302f27e27a859182bf3e43bba212.js?vsn=d"></script>
43 44 45 <link rel="icon" type="image/x-icon" href="/favicon-91f37b602a111216f1eef3aa337ad763.ico?vsn=d"> 46 47
47<script> 48 window.__GOOGLE_MAPS_KEY = "AIzaSyB2R6AGveQ97KRzrY-h1SLiKGjLflgeWXA"; 49 </script>
49 50
50<script> 51 (g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.googleapis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({ 52 key: "AIzaSyB2R6AGveQ97KRzrY-h1SLiKGjLflgeWXA", 53 v: "weekly" 54 }); 55 </script>
55 56 </head> 57 <body class="bg-white text-black"> 58 <div class="min-h-screen bg-white"> 59 60 61 62 <section class="relative bg-black text-white min-h-[85vh] sm:min-h-[90vh] flex flex-col"> 63 64 <nav class="flex items-center justify-between px-6 py-4 sm:py-5 max-w-6xl mx-auto w-full"> 65 <span class="text-[14px] sm:text-[16px] font-black tracking-tight text-white/80">LOTCHECK</span> 66 <div class="flex items-center gap-4 sm:gap-6"> 67 <a href="/tools" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] sm:text-[11px] text-white/40 uppercase tracking-[0.2em] hover:text-white transition-colors">Tools</a> 68 <a href="/guides" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] sm:text-[11px] text-white/40 uppercase tracking-[0.2em] hover:text-white transition-colors">Guides</a> 69 <a href="/cities" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] sm:text-[11px] text-white/40 uppercase tracking-[0.2em] hover:text-white transition-colors">Cities</a> 70 <a href="/tools/codes" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] sm:text-[11px] text-white/40 uppercase tracking-[0.2em] hover:text-white transition-colors">Codes</a> 71 </div> 72 </nav> 73 74 <div class="flex-1 flex items-center"> 75 <div class="max-w-3xl mx-auto px-6 w-full"> 76 77 <p class="text-[10px] sm:text-[11px] text-white/40 uppercase tracking-[0.3em] mb-6 sm:mb-8">Free Property Lookup</p> 78 79 <h1 class="text-[40px] sm:text-[64px] lg:text-[80px] font-black leading-[0.95] tracking-tight mb-6 sm:mb-8"> 80 What can you<br>build on<br>your lot? 81 </h1> 82 83 <p class="text-[16px] sm:text-[20px] text-white/50 max-w-md leading-relaxed mb-10 sm:mb-14"> 84 Enter any address. Get zoning, setbacks, ADU eligibility, and development scenarios â instantly. 85 </p> 86 87 <div id="address-search" class="relative max-w-xl"> 88 <div class="flex"> 89 <input type="text" id="address-input" placeholder="Enter an address..." class="flex-1 px-5 sm:px-6 py-4 sm:py-5 bg-white text-black text-[15px] sm:text-[17px] border-0 focus:outline-none focus:ring-2 focus:ring-white/30 placeholder:text-black/35" style="border-radius: 2px 0 0 2px;" autofocus autocomplete="off"> 90 <button id="address-submit" type="button" class="px-6 sm:px-10 py-4 sm:py-5 bg-[oklch(45%_0.12_250)] text-white font-bold text-[14px] sm:text-[15px] tracking-wide hover:brightness-110 transition-all" style="border-radius: 0 2px 2px 0;"> 91 Check 92 </button> 93 </div> 94 <div id="search-dropdown" class="hidden absolute top-full left-0 right-0 bg-white border border-black/10 shadow-lg z-50 max-h-[320px] overflow-y-auto mt-px"></div> 95 <div id="search-status" class="hidden mt-3 text-[13px] text-white/60"></div> 96 </div> 97 98 <div class="mt-5 flex flex-wrap items-center gap-3"> 99 <span class="text-[10px] text-white/25 uppercase tracking-[0.2em]">Try</span> 100 <button class="search-example text-[11px] sm:text-[12px] text-white/40 hover:text-white border-b border-white/15 hover:border-white/50 transition-colors cursor-pointer" data-query="1600 Vine St, Los Angeles">1600 Vine St, Los Angeles</button> 101 <button class="search-example text-[11px] sm:text-[12px] text-white/40 hover:text-white border-b border-white/15 hover:border-white/50 transition-colors cursor-pointer" data-query="800 Bagby St, Houston">800 Bagby St, Houston</button> 102 <button class="search-example text-[11px] sm:text-[12px] text-white/40 hover:text-white border-b border-white/15 hover:border-white/50 transition-colors cursor-pointer" data-query="100 E Broward Blvd, Fort Lauderdale">100 E Broward Blvd, Fort Lauderdale</button> 103 </div> 104 105 <div class="mt-10 sm:mt-14 flex items-center gap-6 sm:gap-10"> 106 <div> 107 <p class="text-[22px] sm:text-[28px] font-black text-white/90">3</p> 108 <p class="text-[10px] text-white/30 uppercase tracking-[0.15em] mt-0.5">States</p> 109 </div> 110 <div class="w-px h-8 bg-white/10"></div> 111 <div> 112 <p class="text-[22px] sm:text-[28px] font-black text-white/90">40</p> 113 <p class="text-[10px] text-white/30 uppercase tracking-[0.15em] mt-0.5">Cities</p> 114 </div> 115 <div class="w-px h-8 bg-white/10"></div> 116 <div> 117 <p class="text-[22px] sm:text-[28px] font-black text-white/90">Free</p> 118 <p class="text-[10px] text-white/30 uppercase tracking-[0.15em] mt-0.5">To search</p> 119 </div> 120 </div> 121 </div> 122 </div> 123 124 <div class="absolute bottom-6 left-1/2 -translate-x-1/2 text-white/20 animate-bounce"> 125 <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 126 <path d="M12 5v14M5 12l7 7 7-7"></path> 127 </svg> 128 </div> 129 </section> 130 131 132 133 <section class="border-b border-black/10 py-14 sm:py-20 bg-neutral-50"> 134 <div class="max-w-5xl mx-auto px-6"> 135 <p class="text-[10px] text-black/30 uppercase tracking-[0.2em] font-bold mb-8">How It Works</p> 136 <div class="grid grid-cols-1 sm:grid-cols-3 gap-10 sm:gap-12"> 137 <div>
138 <span class="text-[36px] font-black text-black/8">01</span> 139 <h3 class="font-bold text-black mt-3 mb-2 text-[15px]">Search any address</h3> 140 <p class="text-[13px] text-black/45 leading-relaxed">Enter a property address in California, Florida, or Texas. We pull parcel data from county records in seconds.</p> 141 </div> 142 <div> 143 <span class="text-[36px] font-black text-black/8">02</span> 144 <h3 class="font-bold text-black mt-3 mb-2 text-[15px]">See what's allowed</h3> 145 <p class="text-[13px] text-black/45 leading-relaxed">Zoning, setbacks, lot dimensions, assessed value â plus what state and local law allows you to build.</p> 146 </div> 147 <div> 148 <span class="text-[36px] font-black text-black/8">03</span> 149 <h3 class="font-bold text-black mt-3 mb-2 text-[15px]">Run scenarios</h3> 150 <p class="text-[13px] text-black/45 leading-relaxed">ADU, duplex, lot split, multi-unit â see what's possible on your lot with development rules calculated.</p> 151 </div> 152 </div> 153 </div> 154 </section> 155 156 157 158 <section class="border-b border-black/10 py-14 sm:py-20"> 159 <div class="max-w-5xl mx-auto px-6"> 160 <p class="text-[10px] text-black/30 uppercase tracking-[0.2em] font-bold mb-8">Who This Is For</p> 161 <div class="grid grid-cols-1 sm:grid-cols-3 gap-10"> 162 <div> 163 <h3 class="font-bold text-black mb-2 text-[15px]">Homeowners</h3> 164 <p class="text-[13px] text-black/45 leading-relaxed italic">"Can I add a second unit to my backyard?"</p> 165 </div> 166 <div> 167 <h3 class="font-bold text-black mb-2 text-[15px]">Investors</h3> 168 <p class="text-[13px] text-black/45 leading-relaxed italic">"How many units can I build on this SB 9 lot split?"</p> 169 </div> 170 <div> 171 <h3 class="font-bold text-black mb-2 text-[15px]">Builders & Architects</h3> 172 <p class="text-[13px] text-black/45 leading-relaxed italic">"What's the max buildable envelope under current zoning?"</p> 173 </div> 174 </div> 175 </div> 176 </section> 177 178 179 180 <div class="max-w-6xl mx-auto px-4 sm:px-6"> 181 182 <div class="pt-14 sm:pt-20 pb-4 flex items-center gap-4"> 183 <h2 class="text-[20px] sm:text-[24px] font-black text-black tracking-tight shrink-0">Housing News</h2> 184 <div class="flex-1 h-px bg-black/10"></div> 185 </div> 186 <p class="text-[13px] text-black/40 mb-6 max-w-lg">ADU permits, zoning reform, building code updates â everything builders, architects, and developers need to know.</p> 187 188 <div class="pb-4 flex items-center gap-3 sm:gap-4 border-b border-black/10"> 189 <div class="flex gap-2 sm:gap-3 items-center overflow-x-auto no-scrollbar"> 190 <a href="/" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] uppercase tracking-[0.15em] whitespace-nowrap text-black font-bold">All</a> 191 192 <a href="/?topic=adu" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] uppercase tracking-[0.15em] whitespace-nowrap text-black/50 hover:text-black">ADU News</a> 193 194 <a href="/?topic=sb9" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] uppercase tracking-[0.15em] whitespace-nowrap text-black/50 hover:text-black">SB 9 & Lot Splits</a> 195 196 <a href="/?topic=zoning" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] uppercase tracking-[0.15em] whitespace-nowrap text-black/50 hover:text-black">Zoning Changes</a> 197 198 <a href="/?topic=legislation" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] uppercase tracking-[0.15em] whitespace-nowrap text-black/50 hover:text-black">New Legislation</a> 199 200 <a href="/?topic=housing-market" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] uppercase tracking-[0.15em] whitespace-nowrap text-black/50 hover:text-black">Housing Market</a> 201 202 <a href="/?topic=affordability" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] uppercase tracking-[0.15em] whitespace-nowrap text-black/50 hover:text-black">Affordability</a> 203 204 <a href="/?topic=development" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] uppercase tracking-[0.15em] whitespace-nowrap text-black/50 hover:text-black">Development</a> 205 206 <a href="/?topic=permits" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] uppercase tracking-[0.15em] whitespace-nowrap text-black/50 hover:text-black">Permits & Approvals</a> 207 208 </div> 209 </div> 210 211 212 213 <div class="grid grid-cols-1 lg:grid-cols-12 gap-0"> 214 215 <main class="lg:col-span-8 lg:border-r lg:border-black/10 lg:pr-8"> 216 217 <div class="grid grid-cols-1 sm:grid-cols-3 gap-5 sm:gap-6 py-6 sm:py-8 border-b border-black/10"> 218 219 <a href="/pulse/democrat-fiona-ma-republican-gloria-romero-to-face-off-in-race-for-lieutenant-go-2026" data-phx-link="redirect" data-phx-link-state="push" class="block group"> 220 <div class="aspect-[16/9] sm:aspect-[4/3] bg-neutral-100 mb-2 sm:mb-3 overflow-hidden"> 221 <img src="https://ca-times.brightspotcdn.com/dims4/default/5ad3a94/2147483647/strip/false/crop/1624x1082+0+0/resize/1500x999!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2F78%2Fe0%2F41063c6141058c9ab61c0fcd4946%2Flt-governor-fiona-ma-gloria-romero.png" alt="Democrat Fiona Ma, Republican Gloria Romero to face off in race for lieutenant governor" class="w-full h-full object-cover group-hover:scale-[1.02] transition-transform duration-500" loading="lazy"> 222 </div> 223 224 <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">Affordability</p> 225 <h3 class="text-[14px] font-bold text-black leading-snug line-clamp-3 group-hover:text-[oklch(45%_0.12_250)] transition-colors"> 226 Democrat Fiona Ma, Republican Gloria Romero to face off in race for lieutenant governor 227 </h3> 228 <p class="text-[10px] text-black/45 mt-1.5 sm:mt-2">LA Times California</p> 229 </a> 230 231 <a href="/pulse/a-long-stalled-venice-affordable-housing-project-could-be-moving-forward-2026" data-phx-link="redirect" data-phx-link-state="push" class="block group"> 232 <div class="aspect-[16/9] sm:aspect-[4/3] bg-neutral-100 mb-2 sm:mb-3 overflow-hidden"> 233 <img src="https://ca-times.brightspotcdn.com/dims4/default/a13a2b8/2147483647/strip/false/crop/5760x3840+0+0/resize/1500x1000!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2F19%2Fba%2Fbec3994644c583e14a3e871acf5b%2F1458214-me-0607-rose-apartments-homeless-gem-012.jpg" alt="A long-stalled Venice affordable housing project could be moving forward" class="w-full h-full object-cover group-hover:scale-[1.02] transition-transform duration-500" loading="lazy"> 234 </div> 235 236 <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">Affordability</p> 237 <h3 class="text-[14px] font-bold text-black leading-snug line-clamp-3 group-hover:text-[oklch(45%_0.12_250)] transition-colors"> 238 A long-stalled Venice affordable housing project could be moving forward 239 </h3> 240 <p class="text-[10px] text-black/45 mt-1.5 sm:mt-2">LA Times California</p> 241 </a> 242 243 <a href="/pulse/its-a-high-demand-job-with-lots-of-openings-how-lausd-trains-adults-for-a-role-i-2026" data-phx-link="redirect" data-phx-link-state="push" class="block group"> 244 <div class="aspect-[16/9] sm:aspect-[4/3] bg-neutral-100 mb-2 sm:mb-3 overflow-hidden"> 245 <img src="https://ca-times.brightspotcdn.com/dims4/default/9a7a4e1/2147483647/strip/false/crop/7280x5464+0+0/resize/1500x1126!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2Fd2%2F85%2F062869304be99939bfd4c105282a%2F1553485-me-maxine-waters-adult-school-child-development-gem-006.jpg" alt="It's a high-demand job with lots of openings. How LAUSD trains adults for a role in child care" class="w-full h-full object-cover group-hover:scale-[1.02] transition-transform duration-500" loading="lazy"> 246 </div> 247 248 <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">ADU News</p> 249 <h3 class="text-[14px] font-bold text-black leading-snug line-clamp-3 group-hover:text-[oklch(45%_0.12_250)] transition-colors"> 250 It's a high-demand job with lots of openings. How LAUSD trains adults for a role in child care 251 </h3> 252 <p class="text-[10px] text-black/45 mt-1.5 sm:mt-2">LA Times California</p> 253 </a> 254 255 </div> 256 257 258 <a href="/pulse/18-year-old-killed-3-wounded-including-child-11-in-shooting-at-california-gradua-2026" data-phx-link="redirect" data-phx-link-state="push" class="flex gap-4 sm:gap-6 py-4 sm:py-5 border-b border-black/5 group"> 259 <div class="flex-1 min-w-0"> 260 <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">ADU News</p> 261 <h3 class="text-[14px] sm:text-[15px] font-bold text-black leading-snug group-hover:text-[oklch(45%_0.12_250)] transition-colors mb-1"> 262 18-year-old killed, 3 wounded including child, 11, in shooting at California graduation 263 </h3> 264 <p class="text-[12px] text-black/55 line-clamp-2 leading-relaxed hidden sm:block overflow-hidden">
264A deadly shooting at a Northern California high school graduation ceremony has highlighted ongoing public safety concerns that could impact residential development and property values in affected comm</p> 265 <p class="text-[10px] text-black/35 mt-1.5 sm:mt-2">LA Times California · Jun 05</p> 266 </div> 267 <div class="w-20 h-20 sm:w-24 sm:h-24 bg-neutral-100 overflow-hidden shrink-0"> 268 <img src="https://ca-times.brightspotcdn.com/dims4/default/640226b/2147483647/strip/true/crop/5325x2796+0+377/resize/1200x630!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2F37%2F06%2F1571ed6c4b4c9d761d4be9bfe25a%2Fap26155815743909.jpg" alt="" class="w-full h-full object-cover" loading="lazy"> 269 </div> 270 </a> 271 272 <a href="/pulse/1-dead-3-injured-in-shooting-after-high-school-graduation-ceremony-in-fairfield-2026" data-phx-link="redirect" data-phx-link-state="push" class="flex gap-4 sm:gap-6 py-4 sm:py-5 border-b border-black/5 group"> 273 <div class="flex-1 min-w-0"> 274 <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">ADU News</p> 275 <h3 class="text-[14px] sm:text-[15px] font-bold text-black leading-snug group-hover:text-[oklch(45%_0.12_250)] transition-colors mb-1"> 276 1 dead, 3 injured in shooting after high school graduation ceremony in Fairfield 277 </h3> 278 <p class="text-[12px] text-black/55 line-clamp-2 leading-relaxed hidden sm:block overflow-hidden">A fatal shooting at Fairfield High School Wednesday evening that left one dead and three injured highlights ongoing public safety concerns that continue to influence residential development patterns a</p> 279 <p class="text-[10px] text-black/35 mt-1.5 sm:mt-2">LA Times California · Jun 04</p> 280 </div> 281 <div class="w-20 h-20 sm:w-24 sm:h-24 bg-neutral-100 overflow-hidden shrink-0"> 282 <img src="https://ca-times.brightspotcdn.com/dims4/default/6e1a800/2147483647/strip/true/crop/4749x2493+0+407/resize/1200x630!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2F9e%2F1c%2F57e16aca48d98d86edf0eb28fad4%2Fgettyimages-1408755897.jpg" alt="" class="w-full h-full object-cover" loading="lazy"> 283 </div> 284 </a> 285 286 <a href="/pulse/family-driving-to-graduation-is-killed-including-4-year-old-twins-in-fiery-socal-2026" data-phx-link="redirect" data-phx-link-state="push" class="flex gap-4 sm:gap-6 py-4 sm:py-5 border-b border-black/5 group"> 287 <div class="flex-1 min-w-0"> 288 <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">ADU News</p> 289 <h3 class="text-[14px] sm:text-[15px] font-bold text-black leading-snug group-hover:text-[oklch(45%_0.12_250)] transition-colors mb-1"> 290 Family driving to graduation is killed, including 4-year-old twins, in fiery SoCal crash 291 </h3> 292 <p class="text-[12px] text-black/55 line-clamp-2 leading-relaxed hidden sm:block overflow-hidden">I cannot write a news summary connecting this tragic traffic accident to California housing development or ADU news, as there is no meaningful connection between the fatal crash and housing policy mat</p> 293 <p class="text-[10px] text-black/35 mt-1.5 sm:mt-2">LA Times California · Jun 03</p> 294 </div> 295 <div class="w-20 h-20 sm:w-24 sm:h-24 bg-neutral-100 overflow-hidden shrink-0"> 296 <img src="https://ca-times.brightspotcdn.com/dims4/default/5e0b471/2147483647/strip/false/crop/3823x2178+0+0/resize/1500x855!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2F4a%2F9c%2F7bb400414ec2a9143d2b5e758fed%2F1540887-me-cult-murder-prelim-ajs-004.jpg" alt="" class="w-full h-full object-cover" loading="lazy"> 297 </div> 298 </a> 299 300 <a href="/pulse/your-last-minute-guide-for-california-insurance-commissioner-controller-and-othe-2026" data-phx-link="redirect" data-phx-link-state="push" class="flex gap-4 sm:gap-6 py-4 sm:py-5 border-b border-black/5 group"> 301 <div class="flex-1 min-w-0"> 302 <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">Affordability</p> 303 <h3 class="text-[14px] sm:text-[15px] font-bold text-black leading-snug group-hover:text-[oklch(45%_0.12_250)] transition-colors mb-1"> 304 Your last-minute guide for California insurance commissioner, controller and other statewide offices 305 </h3> 306 <p class="text-[12px] text-black/55 line-clamp-2 leading-relaxed hidden sm:block overflow-hidden">California voters will elect new statewide officials in 2026 who will have significant impact on housing costs and development across the state. While much attention has focused on the gubernatorial r</p> 307 <p class="text-[10px] text-black/35 mt-1.5 sm:mt-2">LA Times California · May 31</p> 308 </div> 309 <div class="w-20 h-20 sm:w-24 sm:h-24 bg-neutral-100 overflow-hidden shrink-0"> 310 <img src="https://ca-times.brightspotcdn.com/dims4/default/08e204a/2147483647/strip/false/crop/2501x1667+0+0/resize/1500x1000!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2Fe2%2F8d%2Fd8e6273548c59d7361f8665c08a2%2Fvoter-survival-guide-hp.jpg" alt="" class="w-full h-full object-cover" loading="lazy"> 311 </div> 312 </a> 313 314 <a href="/pulse/your-last-minute-voter-guide-to-the-2026-california-governors-race-2026" data-phx-link="redirect" data-phx-link-state="push" class="flex gap-4 sm:gap-6 py-4 sm:py-5 border-b border-black/5 group"> 315 <div class="flex-1 min-w-0"> 316 <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">Affordability</p> 317 <h3 class="text-[14px] sm:text-[15px] font-bold text-black leading-snug group-hover:text-[oklch(45%_0.12_250)] transition-colors mb-1"> 318 Your last minute voter guide to the 2026 California governor's race 319 </h3> 320 <p class="text-[12px] text-black/55 line-clamp-2 leading-relaxed hidden sm:block overflow-hidden">Eight candidates are competing to replace Governor Gavin Newsom in California's 2026 gubernatorial race, with housing affordability emerging as a central campaign issue. The field includes former U.S.</p> 321 <p class="text-[10px] text-black/35 mt-1.5 sm:mt-2">LA Times California · May 30</p> 322 </div> 323 <div class="w-20 h-20 sm:w-24 sm:h-24 bg-neutral-100 overflow-hidden shrink-0"> 324 <img src="https://ca-times.brightspotcdn.com/dims4/default/f6e6b49/2147483647/strip/true/crop/5000x2625+0+354/resize/1200x630!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2F2c%2Fe4%2F3e23b43c4bd08aac2f27c52b0c93%2F2273625296.jpg" alt="" class="w-full h-full object-cover" loading="lazy"> 325 </div> 326 </a> 327 328 <a href="/pulse/thousands-are-leaving-los-angeles-year-after-year-this-is-why-we-still-have-a-ho-2026" data-phx-link="redirect" data-phx-link-state="push" class="flex gap-4 sm:gap-6 py-4 sm:py-5 border-b border-black/5 group"> 329 <div class="flex-1 min-w-0"> 330 <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">Affordability</p> 331 <h3 class="text-[14px] sm:text-[15px] font-bold text-black leading-snug group-hover:text-[oklch(45%_0.12_250)] transition-colors mb-1"> 332 Thousands are leaving Los Angeles year after year. This is why we still have a housing crunch 333 </h3> 334 <p class="text-[12px] text-black/55 line-clamp-2 leading-relaxed hidden sm:block overflow-hidden">Los Angeles continues to face a persistent housing affordability crisis despite losing nearly 10,000 residents last year and 62,000 across LA County. While population declines in other regions typical</p> 335 <p class="text-[10px] text-black/35 mt-1.5 sm:mt-2">LA Times California · May 29</p> 336 </div> 337 <div class="w-20 h-20 sm:w-24 sm:h-24 bg-neutral-100 overflow-hidden shrink-0"> 338 <img src="https://ca-times.brightspotcdn.com/dims4/default/6bcdc2e/2147483647/strip/true/crop/5836x3064+0+414/resize/1200x630!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2F41%2F3e%2F4a3b2dbc4dad8e0d18215f2cc524%2Fgettyimages-2277488688.jpg" alt="" class="w-full h-full object-cover" loading="lazy"> 339 </div> 340 </a> 341 342 <a href="/pulse/evidence-suggests-mom-pulled-trigger-in-north-hills-murder-suicide-that-left-4-d-2026" data-phx-link="redirect" data-phx-link-state="push" class="flex gap-4 sm:gap-6 py-4 sm:py-5 border-b border-black/5 group"> 343 <div class="flex-1 min-w-0"> 344 <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">ADU News</p> 345 <h3 class="text-[14px] sm:text-[15px] font-bold text-black leading-snug group-hover:text-[oklch(45%_0.12_250)] transition-colors mb-1"> 346 Evidence suggests mom pulled trigger in North Hills murder-suicide that left 4 dead, sources say 347 </h3> 348 <p class="text-[12px] text-black/55 line-clamp-2 leading-relaxed hidden sm:block overflow-hidden">I cannot write a news summary about this tragic murder-suicide case for a housing development website. This article details a horrific family tragedy involving the deaths of four people, including chi</p> 349 <p class="text-[10px] text-black/35 mt-1.5 sm:mt-2">LA Times California · May 28</p> 350 </div> 351 <div class="w-20 h-20 sm:w-24 sm:h-24 bg-neutral-100 overflow-hidden shrink-0"> 352 <img src="https://ca-times.brightspotcdn.com/dims4/default/4690fd7/2147483647/strip/false/crop/7148x5187+0+0/resize/1500x1088!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2F63%2Fba%2F773deed44deb9fd086227c77ddae%2F1556716-me-four
352-dead-north-hills-gem-001.jpg" alt="" class="w-full h-full object-cover" loading="lazy"> 353 </div> 354 </a> 355 356 <a href="/pulse/socal-teen-is-graduating-from-high-school-and-college-and-another-college-2026" data-phx-link="redirect" data-phx-link-state="push" class="flex gap-4 sm:gap-6 py-4 sm:py-5 border-b border-black/5 group"> 357 <div class="flex-1 min-w-0"> 358 <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">ADU News</p> 359 <h3 class="text-[14px] sm:text-[15px] font-bold text-black leading-snug group-hover:text-[oklch(45%_0.12_250)] transition-colors mb-1"> 360 SoCal teen is graduating from high school. And college. And another college 361 </h3> 362 <p class="text-[12px] text-black/55 line-clamp-2 leading-relaxed hidden sm:block overflow-hidden">An 18-year-old Adelanto resident has made headlines for an extraordinary academic achievement that highlights the growing educational opportunities in California's Inland Empire region, an area experi</p> 363 <p class="text-[10px] text-black/35 mt-1.5 sm:mt-2">LA Times California · May 28</p> 364 </div> 365 <div class="w-20 h-20 sm:w-24 sm:h-24 bg-neutral-100 overflow-hidden shrink-0"> 366 <img src="https://ca-times.brightspotcdn.com/dims4/default/e5838ce/2147483647/strip/true/crop/6720x3528+0+476/resize/1200x630!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2F0c%2F1e%2F7332d17d44d8b50a30e7227b5279%2F1555933-me-contreras-graduates-gxc-0226.jpg" alt="" class="w-full h-full object-cover" loading="lazy"> 367 </div> 368 </a> 369 370 <a href="/pulse/2-adults-and-2-children-fatally-shot-in-possible-murder-suicide-in-north-hills-h-2026" data-phx-link="redirect" data-phx-link-state="push" class="flex gap-4 sm:gap-6 py-4 sm:py-5 border-b border-black/5 group"> 371 <div class="flex-1 min-w-0"> 372 <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">ADU News</p> 373 <h3 class="text-[14px] sm:text-[15px] font-bold text-black leading-snug group-hover:text-[oklch(45%_0.12_250)] transition-colors mb-1"> 374 2 adults and 2 children fatally shot in possible murder-suicide in North Hills home 375 </h3> 376 <p class="text-[12px] text-black/55 line-clamp-2 leading-relaxed hidden sm:block overflow-hidden">Los Angeles Police Department investigators are examining a fatal shooting in North Hills that left four people dead in what authorities believe was a murder-suicide incident. Officers responded to a </p> 377 <p class="text-[10px] text-black/35 mt-1.5 sm:mt-2">LA Times California · May 28</p> 378 </div> 379 <div class="w-20 h-20 sm:w-24 sm:h-24 bg-neutral-100 overflow-hidden shrink-0"> 380 <img src="https://ca-times.brightspotcdn.com/dims4/default/6198e1a/2147483647/strip/true/crop/6653x3493+0+471/resize/1200x630!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2Fbd%2Fac%2F8aac4bb6451e933bce721c70cedf%2F914001-me-lapd-06-mjc-2.jpg" alt="" class="w-full h-full object-cover" loading="lazy"> 381 </div> 382 </a> 383 384 385 <div class="flex justify-center gap-3 py-6 sm:py-8"> 386 387 <span class="text-[11px] text-black/35">
3871/8</span> 388 <a href="/?topic=&page=2" data-phx-link="redirect" data-phx-link-state="push" class="text-[11px] text-black/55 hover:text-black uppercase tracking-wider">Older â</a> 389 </div> 390 </main> 391 392 <aside class="hidden lg:block lg:col-span-4 lg:pl-8 pt-6"> 393 394 395 396 <div class="pb-6 mb-6 border-b border-black/10"> 397 <p class="text-[10px] text-black font-bold uppercase tracking-[0.2em] mb-4">Tools</p> 398 <div class="space-y-2"> 399 <a href="/tools/adu-eligibility" data-phx-link="redirect" data-phx-link-state="push" class="block text-[13px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">ADU Eligibility Calculator</a> 400 <a href="/tools/setback-calculator" data-phx-link="redirect" data-phx-link-state="push" class="block text-[13px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">Setback Calculator</a> 401 <a href="/tools/parking-calculator" data-phx-link="redirect" data-phx-link-state="push" class="block text-[13px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">Parking Calculator</a> 402 <a href="/tools/far-calculator" data-phx-link="redirect" data-phx-link-state="push" class="block text-[13px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">FAR Calculator</a> 403 </div> 404 <a href="/tools" data-phx-link="redirect" data-phx-link-state="push" class="text-[11px] text-[oklch(45%_0.12_250)] font-bold mt-3 inline-block hover:underline">All Tools â</a> 405 </div> 406 407 <div class="pb-6 mb-6 border-b border-black/10"> 408 <p class="text-[10px] text-black font-bold uppercase tracking-[0.2em] mb-4">ADU Guides</p> 409 <div class="space-y-1.5"> 410 <a href="/cities/los-angeles/adu-guide" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-black transition-colors">â Los Angeles</a> 411 <a href="/cities/san-francisco/adu-guide" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-black transition-colors">â San Francisco</a> 412 <a href="/cities/miami/adu-guide" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-black transition-colors">â Miami</a> 413 <a href="/cities/houston/adu-guide" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-black transition-colors">â Houston</a> 414 <a href="/cities/austin/adu-guide" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-black transition-colors">â Austin</a> 415 </div> 416 <a href="/guides" data-phx-link="redirect" data-phx-link-state="push" class="text-[11px] text-[oklch(45%_0.12_250)] font-bold mt-3 inline-block hover:underline">All guides â</a> 417 </div> 418 419 <div class="pb-6 mb-6 border-b border-black/10"> 420 <p class="text-[10px] text-black font-bold uppercase tracking-[0.2em] mb-4">Legislation</p> 421 <div class="space-y-3"> 422 <div> 423 <span class="text-[13px] font-black text-black">SB 9</span> 424 <span class="text-[12px] text-black/50 ml-1">Duplex + lot split on SF lots</span> 425 </div> 426 <div> 427 <span class="text-[13px] font-black text-black">ADU</span> 428 <span class="text-[12px] text-black/50 ml-1">Accessory units up to 1,200 sf</span> 429 </div> 430 <div> 431 <span class="text-[13px] font-black text-black">SB 1211</span> 432 <span class="text-[12px] text-black/50 ml-1">Multiple ADUs per lot</span> 433 </div> 434 </div> 435 </div> 436 437 <div> 438 <p class="text-[10px] text-black font-bold uppercase tracking-[0.2em] mb-4">Cities</p> 439 <div class="grid grid-cols-2 gap-x-4 gap-y-1.5"> 440 441 <a href="/cities/los-angeles" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors"> 442 Los Angeles 443 </a> 444 445 <a href="/cities/san-diego" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors"> 446 San Diego 447 </a> 448 449 <a href="/cities/san-jose" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors"> 450 San Jose 451 </a> 452 453 <a href="/cities/san-francisco" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors"> 454 San Francisco 455 </a> 456 457 <a href="/cities/fresno" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors"> 458 Fresno 459 </a> 460 461 <a href="/cities/sacramento" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors"> 462 Sacramento 463 </a> 464 465 <a href="/cities/long-beach" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors"> 466 Long Beach 467 </a> 468 469 <a href="/cities/oakland" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors"> 470 Oakland 471 </a> 472 473 <a href="/cities/bakersfield" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors"> 474 Bakersfield 475 </a> 476 477 <a href="/cities/anaheim" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors"> 478 Anaheim 479 </a> 480 481 </div> 482 <a href="/cities" data-phx-link="redirect" data-phx-link-state="push" class="text-[11px] text-[oklch(45%_0.12_250)] font-bold mt-3 inline-block hover:underline"> 483 All Cities â 484 </a> 485 </div> 486 </aside> 487 </div> 488 489 <div class="lg:hidden border-t border-black/10 mt-4 pt-6 pb-8 space-y-6"> 490 491 492 493 <div class="grid grid-cols-2 gap-6"> 494 <div> 495 <p class="text-[10px] text-black font-bold uppercase tracking-[0.2em] mb-3">Legislation</p> 496 <div class="space-y-2"> 497 <div><span class="text-[12px] font-bold text-black">SB 9</span> <span class="text-[11px] text-black/50">Duplex + lot split</span></div> 498 <div><span class="text-[12px] font-bold text-black">ADU</span> <span class="text-[11px] text-black/50">Up to 1,200 sf</span></div> 499 <div><span class="text-[12px] font-bold text-black">SB 1211</span> <span class="text-[11px] text-black/50">Multiple ADUs</span></div> 500 </div> 501 </div> 502 <div> 503 <p class="text-[10px] text-black font-bold uppercase tracking-[0.2em] mb-3">Cities</p> 504 <div class="space-y-1"> 505 506 <a href="/cities/los-angeles" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors"> 507 Los Angeles 508 </a> 509 510 <a href="/cities/san-diego" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors"> 511 San Diego 512 </a> 513 514 <a href="/cities/san-jose" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors"> 515 San Jose 516 </a> 517 518 <a href="/cities/san-francisco" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors"> 519 San Francisco 520 </a> 521 522 <a href="/cities/fresno" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors"> 523 Fresno 524 </a> 525 526 <a href="/cities/sacramento" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors"> 527 Sacramento 528 </a> 529 530 <a href="/cities/long-beach" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors"> 531 Long Beach 532 </a> 533 534 <a href="/cities/oakland" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors"> 535 Oakland 536 </a> 537 538 <a href="/cities" data-phx-link="redirect" data-phx-link-state="push" class="block text-[11px] text-[oklch(45%_0.12_250)] font-bold mt-2 hover:underline">All Cities â</a> 539 </div> 540 </div> 541 </div> 542 </div> 543 </div> 544 545 <footer class="border-t-2 border-black mt-4 lg:mt-12"> 546 <div class="max-w-6xl mx-auto px-4 sm:px-6 py-4 sm:py-5 flex flex-col sm:flex-row items-center justify-between gap-2">
547 <span class="text-[11px] font-black text-black uppercase tracking-[0.2em]">LotCheck</span> 548 <span class="text-[10px] text-black/35 text-center">Housing development intelligence. Not legal advice.</span> 549 </div> 550 </footer> 551</div> 552
553<script> 554(function(){ 555 var inp = document.getElementById('address-input'); 556 var btn = document.getElementById('address-submit'); 557 var dd = document.getElementById('search-dropdown'); 558 var statusEl = document.getElementById('search-status'); 559 if(!inp || !dd) return; 560 561 var timer, activeIdx = -1, items = [], sessionToken = null; 562 var US_BOUNDS = { south: 24.5, west: -125.0, north: 49.5, east: -66.5 }; 563 564 function esc(s){ return s ? s.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>') : ''; } 565 function showStatus(msg){ 566 if(statusEl){ statusEl.textContent = msg; statusEl.classList.remove('hidden'); setTimeout(function(){ statusEl.classList.add('hidden'); }, 4000); } 567 } 568 569 async function initGoogle(){ 570 try { 571 var lib = await google.maps.importLibrary('places'); 572 var AutocompleteSuggestion = lib.AutocompleteSuggestion; 573 var AutocompleteSessionToken = lib.AutocompleteSessionToken; 574 sessionToken = new AutocompleteSessionToken(); 575 576 inp.addEventListener('input', function(){ 577 var q = inp.value.trim(); 578 clearTimeout(timer); 579 activeIdx = -1; 580 if(q.length < 3){ dd.classList.add('hidden'); dd.innerHTML=''; return; } 581 timer = setTimeout(async function(){ 582 try { 583 var resp = await AutocompleteSuggestion.fetchAutocompleteSuggestions({ 584 input: q, 585 includedRegionCodes: ['us'], 586 includedPrimaryTypes: ['street_address', 'subpremise', 'premise'], 587 locationBias: new google.maps.LatLngBounds( 588 { lat: US_BOUNDS.south, lng: US_BOUNDS.west }, 589 { lat: US_BOUNDS.north, lng: US_BOUNDS.east } 590 ), 591 sessionToken: sessionToken 592 }); 593 var suggestions = resp.suggestions || []; 594 if(suggestions.length === 0){ 595 dd.innerHTML='<div style="padding:12px;font-size:13px;color:#999">No addresses found</div>'; 596 dd.classList.remove('hidden'); return; 597 } 598 items = suggestions; 599 dd.innerHTML = suggestions.map(function(s, i){ 600 var pred = s.placePrediction; 601 var main = pred.mainText ? pred.mainText.text : ''; 602 var secondary = pred.secondaryText ? pred.secondaryText.text : ''; 603 return '<div class="ac-item" data-idx="'+i+'" style="display:block;padding:10px 16px;border-bottom:1px solid #f0f0f0;cursor:pointer"'+ 604 ' onmouseover="this.style.background=\'#f5f5f5\'" onmouseout="this.style.background=\'white\'">'+ 605 '<div style="font-size:14px;font-weight:500;color:#000">'+esc(main)+'</div>'+ 606 '<div style="font-size:11px;color:#888;margin-top:2px">'+esc(secondary)+'</div></div>'; 607 }).join(''); 608 dd.classList.remove('hidden'); 609 dd.querySelectorAll('.ac-item').forEach(function(el){ 610 el.addEventListener('click', function(){ selectItem(parseInt(el.dataset.idx)); }); 611 }); 612 } catch(err){ console.warn('Google autocomplete error:', err); } 613 }, 200); 614 }); 615 return true; 616 } catch(err){ return false; } 617 } 618 619 async function selectItem(idx){ 620 var suggestion = items[idx]; 621 if(!suggestion || !suggestion.placePrediction) return; 622 623 showStatus('Looking up parcelâ¦'); 624 dd.classList.add('hidden'); 625 626 try { 627 var place = suggestion.placePrediction.toPlace(); 628 await place.fetchFields({ fields: ['formattedAddress', 'addressComponents', 'location'] }); 629 630 var parcelSearchStates = ['CA','TX','FL']; 631 var contentStates = ['CA','FL','TX']; 632 var stateCode = null; 633 (place.addressComponents || []).forEach(function(c){ 634 if(c.types && c.types.indexOf('administrative_area_level_1') !== -1) stateCode = c.shortText; 635 }); 636 if(!stateCode || contentStates.indexOf(stateCode) === -1){ 637 showStatus('LotCheck currently covers CA, FL, and TX. More states coming soon.'); 638 return; 639 } 640 if(parcelSearchStates.indexOf(stateCode) === -1){ 641 showStatus('Parcel search for ' + stateCode + ' is coming soon.'); 642 return; 643 } 644 645 sessionToken = new google.maps.places.AutocompleteSessionToken(); 646 647 var streetNumber = '', route = '', city = '';
648 (place.addressComponents || []).forEach(function(c){ 649 if(c.types.indexOf('street_number') !== -1) streetNumber = c.longText || c.shortText || ''; 650 if(c.types.indexOf('route') !== -1) route = c.longText || c.shortText || ''; 651 if(c.types.indexOf('locality') !== -1) city = c.longText || c.shortText || ''; 652 }); 653 var street = (streetNumber + ' ' + route).trim(); 654 var addr = (place.formattedAddress || '').replace(/, USA$/, ''); 655 inp.value = addr; 656 657 // TX/FL: lat/lng spatial search 658 if((stateCode === 'TX' || stateCode === 'FL') && place.location){ 659 var lat = place.location.lat(); 660 var lng = place.location.lng(); 661 var r = await fetch('/api/search?lat=' + lat + '&lng=' + lng + '&state=' + stateCode); 662 var d = await r.json(); 663 if(d.results && d.results.length > 0){ 664 window.location.href = '/parcel/' + d.results[0].object_id; 665 return; 666 } 667 showStatus('No parcel found for this ' + stateCode + ' address. Try a different address.'); 668 return; 669 } 670 671 // CA: street/city search 672 if(street && city){ 673 var r = await fetch('/api/search?street=' + encodeURIComponent(street) + '&city=' + encodeURIComponent(city)); 674 var d = await r.json(); 675 if(d.results && d.results.length > 0){ 676 window.location.href = '/parcel/' + d.results[0].object_id; 677 return; 678 } 679 } 680 if(street){ 681 var r2 = await fetch('/api/search?q=' + encodeURIComponent(street)); 682 var d2 = await r2.json(); 683 if(d2.results && d2.results.length > 0){ 684 window.location.href = '/parcel/' + d2.results[0].object_id; 685 return; 686 } 687 } 688 showStatus('No parcel found for this address. Try a different address.'); 689 } catch(err){ 690 showStatus('Search error. Please try again.'); 691 } 692 } 693 694 inp.addEventListener('keydown', function(e){ 695 var divItems = dd.querySelectorAll('.ac-item'); 696 if(e.key === 'Escape'){ dd.classList.add('hidden'); activeIdx = -1; return; } 697 if(e.key === 'ArrowDown' || e.key === 'ArrowUp'){ 698 e.preventDefault(); 699 if(!divItems.length) return; 700 activeIdx = e.key === 'ArrowDown' ? Math.min(activeIdx+1, divItems.length-1) : Math.max(activeIdx-1, 0); 701 divItems.forEach(function(el,i){ el.style.background = i === activeIdx ? '#f0f0f0' : 'white'; }); 702 return; 703 } 704 if(e.key === 'Enter'){ 705 e.preventDefault(); 706 if(activeIdx >= 0 && items[activeIdx]) selectItem(activeIdx); 707 else if(items.length > 0) selectItem(0); 708 } 709 }); 710 711 btn.addEventListener('click', function(){ 712 if(items.length > 0) selectItem(activeIdx >= 0 ? activeIdx : 0); 713 }); 714 715 // Example buttons 716 document.querySelectorAll('.search-example').forEach(function(el){ 717 el.addEventListener('click', function(){ 718 inp.value = el.dataset.query; 719 inp.dispatchEvent(new Event('input')); 720 }); 721 }); 722 723 document.addEventListener('click', function(e){ 724 if(!document.getElementById('address-search').contains(e.target)) dd.classList.add('hidden'); 725 }); 726 727 if(window.__GOOGLE_MAPS_KEY){ 728 (async function(){ await initGoogle(); })(); 729 } 730})(); 731</script>
731 732 </body> 733</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.