Cara Mencipta Semula Pegman Ikon dari Peta Google
Ini adalah coretan kecil yang saya mahu cuba sejak sekian lama. Saya akhirnya dapat mencipta semula ciri ikonik ini daripada Peta Google: keupayaan untuk menyeret dan menjatuhkan lelaki kecil ini, dikenali sebagai Pegman, untuk bertukar kepada Street View.
TL;DR
Klik dan seret ikon kecil di penjuru kanan sebelah bawah ke atas peta:
HTML
Strukturnya mudah. Saya ada:
- Sebuah #peta untuk digunakan sebagai bekas (dengan imej latar belakang digunakan).
- Bekas #pegman diletakkan di sudut kanan bawah.
- Elemen #pegman itu sendiri untuk watak yang boleh diseret.
<div> <h2> CSS </h2> <p>Positioning everything is simple, as you can see in the source code above, but the most important part is the rotate property. This is dynamically updated using JavaScript:<br> </p> <pre class="brush:php;toolbar:false">#pegman { /* other styles */ rotate: var(--r); }
Nilai putaran berubah berdasarkan interaksi pengguna, yang akan kita selami seterusnya.
Javascript
Semuanya di sini berkisar pada interaksi pengguna. Pengendali JavaScript:
- Mendengar acara tetikus.
- Mengemas kini kedudukan dan putaran Pegman secara dinamik.
- Menambah animasi lancar untuk UX yang lebih baik.
const pegman = document.querySelector('#pegman'); let isDragging = false; let initialX = 0; let initialY = 0; let inactivityTimeout; let lastX = 0; const timeout = 25; const maxDegrees = 50; // Event listeners pegman.addEventListener('mousedown', onMouseDown); document.addEventListener('mousemove', onMouseMove); document.addEventListener('mouseup', onMouseUp);
Mari pecahkan setiap fungsi:
onMouseDown
Ini memulakan seretan dengan merakam kedudukan awal tetikus dan menogol bendera isDragging.
const onMouseDown = (e) => { isDragging = true; initialX = e.clientX; initialY = e.clientY; };
onMouseMove
Ini mengendalikan pergerakan dan putaran Pegman semasa seretan. Ia memastikan:
- Putaran kekal dalam julat (untuk mengelakkan sudut melampau seperti Superman terbang).
- Kemas kini nilai putar secara dinamik menggunakan --r.
const onMouseMove = (e) => { if (!isDragging) return; const dy = e.clientY - initialY; const dx = e.clientX - initialX; // Limit rotation range let rx = Math.max(-maxDegrees, Math.min(maxDegrees, dx - lastX)); pegman.setAttribute('style', `--r: ${rx}deg`); // Animate Pegman's position pegman.animate({ translate: `${dx}px ${dy}px` }, { duration: 100, fill: 'forwards', }); // Reset rotation after inactivity clearTimeout(inactivityTimeout); inactivityTimeout = setTimeout(() => { lastX = dx; pegman.setAttribute('style', `--r: 0deg`); }, timeout); };
onMouseUp
Ini menetapkan semula keadaan Pegman sebaik sahaja pengguna berhenti menyeret:
- Putaran ditetapkan semula kepada 0.
- Pegman kembali lancar ke kedudukan asalnya.
const onMouseUp = () => { isDragging = false; // Reset rotation pegman.setAttribute('style', `--r: 0`); // Animate Pegman back to its original position pegman.animate({ translate: `0px 0px` }, { duration: 500, fill: 'forwards', easing: 'ease', }); // Clear residual state inactivityTimeout = setTimeout(() => { lastX = 0; }, timeout); };
Fikiran Akhir
Coretan ini menyerlahkan bagaimana animasi mudah dan interaktiviti boleh mencipta semula pengalaman pengguna yang ikonik. Ambilan penting:
- Menggunakan sifat tersuai CSS (seperti --r) memastikan penggayaan dinamik dan terurus.
- Had putaran memastikan rasa yang digilap dan semula jadi untuk interaksi pengguna.
- Tamat masa dan animasi melonggarkan menambah realisme pada gerakan.
Jangan ragu untuk menghentikan CodePen, buat perubahan dan beritahu saya pendapat anda! ??️
By the way...
Saya menggunakan sprite asal daripada google, yang anda boleh lihat di sini dan membuat percubaan:
- keadaan landasan
- keadaan jatuh
- keadaan terjuntai
Tahukah anda? ✨ Lokasi Peta Google yang saya gunakan ialah Kampung Santa Claus yang sebenar!
Fakta menyeronokkan: Nama Finland Santa ialah Joulupukki, dan dia berasal dari Finland ???
Atas ialah kandungan terperinci Cara Mencipta Semula Pegman Ikon dari Peta Google. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Sekiranya anda baru -baru ini mula bekerja dengan GraphQL, atau mengkaji semula kebaikan dan keburukannya, anda tidak akan ragu -ragu mendengar perkara seperti "Graphql tidak menyokong caching" atau

Dengan pendakian harga bitcoin baru -baru ini lebih dari 20k $ USD, dan baru -baru ini melanggar 30k, saya fikir ia patut mengambil menyelam yang mendalam kembali ke dalam mewujudkan Ethereum

Tidak kira tahap tahap anda sebagai pemaju, tugas yang kami selesaikan -sama ada besar atau kecil -membuat kesan besar dalam pertumbuhan peribadi dan profesional kami.

Ia ' s! Tahniah kepada pasukan Vue untuk menyelesaikannya, saya tahu ia adalah usaha besar dan lama datang. Semua dokumen baru juga.

Saya mempunyai seseorang yang menulis dengan soalan yang sangat legit ini. Lea hanya blog tentang bagaimana anda boleh mendapatkan sifat CSS yang sah dari penyemak imbas. That ' s seperti ini.

Pada hari yang lain, saya melihat sedikit ini sangat indah dari laman web Corey Ginnivan di mana koleksi kad timbunan di atas satu sama lain semasa anda menatal.

Terdapat beberapa aplikasi desktop ini di mana matlamat menunjukkan laman web anda pada dimensi yang berbeza pada masa yang sama. Oleh itu, anda boleh menulis
