← back to Rentv 2026
News map: add Street/Satellite base-layer toggle (Esri World Imagery, $0 no key)
eacf3831633943ba1ba42aac41b4756f93c09e60 · 2026-08-06 09:14:29 -0700 · Steve Abrams
Satellite view lets you see the actual properties/areas behind each story. Free Esri
World Imagery tiles — no Google Maps, no API key, no billing.
TK-10284
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Files touched
Diff
commit eacf3831633943ba1ba42aac41b4756f93c09e60
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Thu Aug 6 09:14:29 2026 -0700
News map: add Street/Satellite base-layer toggle (Esri World Imagery, $0 no key)
Satellite view lets you see the actual properties/areas behind each story. Free Esri
World Imagery tiles — no Google Maps, no API key, no billing.
TK-10284
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
public/map.html | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/public/map.html b/public/map.html
index 2956a25e..8987de74 100644
--- a/public/map.html
+++ b/public/map.html
@@ -98,9 +98,14 @@ var CUTOFF=(function(){var d=new Date();d.setMonth(d.getMonth()-3);return d;})()
function isFresh(a){ return a.date && new Date(a.date+'T00:00:00') >= CUTOFF; }
var map=L.map('map',{zoomControl:true,worldCopyJump:true}).setView([37.5,-119],5); // Western US default
-L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',{
+// Two free base layers (no API key): OSM streets + Esri World Imagery satellite.
+var streets=L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',{
maxZoom:18, attribution:'© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>'
}).addTo(map);
+var satellite=L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',{
+ maxZoom:19, attribution:'Imagery © <a href="https://www.esri.com/">Esri</a>, Maxar, Earthstar Geographics'
+});
+L.control.layers({'Streets':streets,'Satellite':satellite},null,{position:'topright',collapsed:false}).addTo(map);
// Cluster group whose badge turns GREEN if it holds any fresh story, else RED.
var cluster=L.markerClusterGroup({
← 83953f44 fix(deals): parseOccupancy counts 'N% pre-leased' (new-dev p
·
back to Rentv 2026
·
PR intel: tenant-scope core entity reads + 2nd-tenant safety f0ce5eb3 →