GD-ML/AndroidCode
13.4k
1<!DOCTYPE html>2<html lang="en">3<head>4<meta charset="UTF-8">5<meta name="viewport" content="width=1080, initial-scale=1.0">6<title>Map Navigation UI</title>7<style>8 body {9 margin: 0;10 padding: 0;11 background: transparent;12 font-family: Arial, Helvetica, sans-serif;13 }14 #render-target {15 position: relative;16 overflow: hidden;17 width: 1080px;18 height: 2400px;19 background: #ffffff;20 }21 22 /* Full-screen map placeholder */23 .map-placeholder {24 position: absolute;25 left: 0;26 top: 0;27 width: 1080px;28 height: 2400px;29 background: #E0E0E0;30 border: 1px solid #BDBDBD;31 color: #757575;32 display: flex;33 justify-content: center;34 align-items: center;35 font-weight: 600;36 letter-spacing: 0.5px;37 }38 39 /* Status bar (approximation) */40 .status-bar {41 position: absolute;42 top: 20px;43 left: 24px;44 right: 24px;45 height: 60px;46 display: flex;47 align-items: center;48 justify-content: space-between;49 color: #333;50 z-index: 5;51 pointer-events: none;52 }53 .status-left {54 font-size: 32px;55 font-weight: 600;56 }57 .status-right {58 display: flex;59 gap: 18px;60 }61 .status-dot {62 width: 22px;63 height: 22px;64 border-radius: 50%;65 background: #4a4a4a;66 opacity: 0.75;67 }68 69 /* Back button */70 .back-btn {71 position: absolute;72 top: 120px;73 left: 28px;74 width: 96px;75 height: 96px;76 background: #ffffff;77 border-radius: 50%;78 box-shadow: 0 6px 16px rgba(0,0,0,0.15);79 display: flex;80 justify-content: center;81 align-items: center;82 z-index: 6;83 }84 .back-btn svg {85 width: 48px;86 height: 48px;87 }88 89 /* Route dashed line */90 .route-line {91 position: absolute;92 top: 660px;93 left: 560px;94 width: 0;95 height: 980px;96 border-left: 10px dashed rgba(0,0,0,0.25);97 z-index: 2;98 }99 100 /* Map tags */101 .tag {102 position: absolute;103 background: #2CB34A;104 color: #fff;105 padding: 16px 22px;106 border-radius: 12px;107 font-weight: 700;108 font-size: 34px;109 z-index: 4;110 }111 .tag.end { top: 520px; left: 640px; }112 .tag.start { bottom: 780px; left: 310px; }113 114 /* Leave Now bubble */115 .leave-bubble {116 position: absolute;117 top: 450px;118 right: 90px;119 background: #ffffff;120 border-radius: 40px;121 padding: 22px 28px;122 box-shadow: 0 8px 20px rgba(0,0,0,0.15);123 display: flex;124 align-items: center;125 gap: 16px;126 z-index: 5;127 font-size: 34px;128 color: #3b3b3b;129 font-weight: 700;130 }131 .leave-bubble svg {132 width: 44px;133 height: 44px;134 }135 136 /* Google watermark */137 .google-watermark {138 position: absolute;139 left: 24px;140 bottom: 600px;141 font-size: 28px;142 color: #777;143 background: rgba(255,255,255,0.7);144 padding: 6px 12px;145 border-radius: 8px;146 z-index: 4;147 }148 149 /* Floating action button */150 .fab {151 position: absolute;152 right: 40px;153 bottom: 680px;154 width: 156px;155 height: 156px;156 border-radius: 50%;157 background: #22C055;158 box-shadow: 0 12px 28px rgba(0,0,0,0.25);159 display: flex;160 align-items: center;161 justify-content: center;162 z-index: 6;163 }164 .fab svg {165 width: 72px;166 height: 72px;167 }168 169 /* Bottom sheet */170 .bottom-sheet {171 position: absolute;172 left: 0;173 right: 0;174 bottom: 0;175 height: 540px;176 background: #2F617A;177 border-top-left-radius: 40px;178 border-top-right-radius: 40px;179 box-shadow: 0 -14px 24px rgba(0,0,0,0.15);180 padding: 36px 40px;181 z-index: 7;182 }183 .card {184 background: rgba(255,255,255,0.08);185 border-radius: 28px;186 padding: 30px 32px;187 display: flex;188 align-items: center;189 gap: 24px;190 margin-bottom: 26px;191 }192 .badge {193 color: #A9C4D2;194 font-weight: 700;195 font-size: 36px;196 width: 140px;197 }198 .poi-icon {199 width: 52px;200 height: 52px;201 min-width: 52px;202 background: #2E88B5;203 border-radius: 50%;204 display: flex;205 align-items: center;206 justify-content: center;207 }208 .poi-icon.end {209 background: #B0C4D6;210 }211 .card-text {212 flex: 1;213 }214 .title {215 color: #FFFFFF;216 font-size: 40px;217 font-weight: 800;218 margin-bottom: 6px;219 }220 .subtitle {221 color: #D1E2EC;222 font-size: 30px;223 }224 .close-btn {225 width: 56px;226 height: 56px;227 border-radius: 50%;228 background: rgba(255,255,255,0.15);229 display: flex;230 align-items: center;231 justify-content: center;232 }233 .close-btn svg {234 width: 26px;235 height: 26px;236 }237 238 /* Home indicator */239 .home-indicator {240 position: absolute;241 bottom: 32px;242 left: 50%;243 transform: translateX(-50%);244 width: 280px;245 height: 10px;246 background: rgba(255,255,255,0.85);247 border-radius: 5px;248 z-index: 8;249 }250 251 /* Icon strokes */252 .icon-stroke {253 stroke: #4d4d4d;254 stroke-width: 6;255 fill: none;256 stroke-linecap: round;257 stroke-linejoin: round;258 }259</style>260</head>261<body>262<div id="render-target">263 264 <div class="map-placeholder">[IMG: Google Map]</div>265 266 <div class="status-bar">267 <div class="status-left">3:28</div>268 <div class="status-right">269 <div class="status-dot"></div>270 <div class="status-dot"></div>271 <div class="status-dot"></div>272 <div class="status-dot"></div>273 <div class="status-dot"></div>274 </div>275 </div>276 277 <div class="back-btn">278 <svg viewBox="0 0 24 24">279 <path d="M15 6 L7 12 L15 18" class="icon-stroke"></path>280 </svg>281 </div>282 283 <div class="route-line"></div>284 285 <div class="tag end">End</div>286 <div class="leave-bubble">287 <svg viewBox="0 0 24 24">288 <circle cx="12" cy="12" r="9" fill="none" stroke="#3b3b3b" stroke-width="2"></circle>289 <path d="M12 6 L12 12 L16 14" stroke="#3b3b3b" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"></path>290 </svg>291 <span>Leave: Now</span>292 </div>293 294 <div class="tag start" style="background:#2CB34A;">Start</div>295 296 <div class="google-watermark">Google</div>297 298 <div class="fab">299 <svg viewBox="0 0 24 24">300 <path d="M8 5 L16 12 L8 19" fill="none" stroke="#ffffff" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path>301 </svg>302 </div>303 304 <div class="bottom-sheet">305 <div class="card">306 <div class="badge">Start</div>307 <div class="poi-icon">308 <svg viewBox="0 0 24 24">309 <path d="M12 3c-4.1 0-7 2.9-7 7 0 5 7 11 7 11s7-6 7-11c0-4.1-2.9-7-7-7z" fill="#ffffff" opacity="0.85"></path>310 <circle cx="12" cy="10" r="3" fill="#2E88B5"></circle>311 </svg>312 </div>313 <div class="card-text">314 <div class="title">The Roxy Hotel New York</div>315 <div class="subtitle">2 6th Ave, New York, NY 10013, USA</div>316 </div>317 <div class="close-btn">318 <svg viewBox="0 0 24 24">319 <path d="M6 6 L18 18 M18 6 L6 18" stroke="#ffffff" stroke-width="2" stroke-linecap="round"></path>320 </svg>321 </div>322 </div>323 324 <div class="card">325 <div class="badge">End</div>326 <div class="poi-icon end">327 <svg viewBox="0 0 24 24">328 <path d="M12 3c-4.1 0-7 2.9-7 7 0 5 7 11 7 11s7-6 7-11c0-4.1-2.9-7-7-7z" fill="#ffffff" opacity="0.7"></path>329 <circle cx="12" cy="10" r="3" fill="#7C8FA1"></circle>330 </svg>331 </div>332 <div class="card-text">333 <div class="title">NAYA - Moynihan Train Hall</div>334 <div class="subtitle">351 W 33rd St, New York, NY 10001, USA</div>335 </div>336 <div class="close-btn">337 <svg viewBox="0 0 24 24">338 <path d="M6 6 L18 18 M18 6 L6 18" stroke="#ffffff" stroke-width="2" stroke-linecap="round"></path>339 </svg>340 </div>341 </div>342 </div>343 344 <div class="home-indicator"></div>345 346</div>347</body>348</html>