Web Geolocation API
- 上一页 Web Fetch API
- 下一页 AJAX 简介
Menentukan lokasi pengguna
HTML Geolocation API digunakan untuk mendapatkan lokasi pengguna.
Kerana ini boleh merosakkan privasi, lokasi tidak tersedia kecuali pengguna memberikan keizinan.
Keterangan:Geolokasi paling akurat untuk perangkat yang memiliki GPS (seperti ponsel cerdas).
Semua peramban mendukung Geolocation API:
Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|
Didukung | Didukung | Didukung | Didukung | Didukung |
Keterangan:Dari Chrome 50, Geolocation API hanya akan berlaku untuk konteks yang aman, seperti HTTPS. Jika situs anda dihosting di sumber yang tidak aman (seperti HTTP), permintaan untuk mengambil lokasi pengguna tidak akan berfungsi lagi.
Menggunakan Geolocation API
getCurrentPosition()
Metode ini digunakan untuk mengembalikan lokasi pengguna.
Contoh di bawah ini mengembalikan garis lintang dan garis bujur lokasi pengguna:
实例
<script> const x = document.getElementById("demo"); function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } else { x.innerHTML = "Geolocation is not supported by this browser."; } } function showPosition(position) { x.innerHTML = "Latitude: " + position.coords.latitude + "<br>Longitude: " + position.coords.longitude; } </script>
Penjelasan contoh:
- Periksa apakah Geolocation didukung
- Jika didukung, jalankan metode getCurrentPosition(). Jika tidak, tampilkan pesan kepada pengguna
- Jika metode getCurrentPosition() sukses, kembalikan objek koordinat kepada fungsi yang ditentukan di parameter (showPosition)
- Fungsi showPosition() menampilkan garis lintang dan garis bujur
Contoh di atas adalah skrip geolokasi yang sangat dasar, tanpa penanganan kesalahan.
Menangani kesalahan dan penolakan
getCurrentPosition()
Parameter kedua metodenya digunakan untuk mengelola kesalahan. Jika lokasi pengguna tidak dapat diambil, fungsi yang ditentukan untuk dijalankan:
实例
function showError(error) { switch(error.code) { case error.PERMISSION_DENIED: x.innerHTML = "User denied the request for Geolocation."; break; case error.POSITION_UNAVAILABLE: x.innerHTML = "Location information is unavailable."; break; case error.TIMEOUT: x.innerHTML = "The request to get user location timed out."; break; case error.UNKNOWN_ERROR: x.innerHTML = "An unknown error occurred."; break; } }
Menampilkan hasil di peta
Jika anda ingin menampilkan hasil di peta, anda perlu mengakses layanan peta, seperti Google Peta.
在下面的例子中,返回的纬度和经度用于在 Google 地图中显示位置(使用静态图像):
实例
function showPosition(position) { let latlon = position.coords.latitude + "," + position.coords.longitude; let img_url = "https://maps.googleapis.com/maps/api/staticmap?center= "+latlon+"&zoom=14&size=400x300&sensor=false&key=YOUR_KEY"; document.getElementById("mapholder").innerHTML = "<img src='"+img_url+"'>"; }
Location-specific 信息
此页面演示了如何在地图上显示用户的位置。
Geolocation 对于特定于位置的信息也非常有用,例如:
- 最新的本地信息
- 显示用户附近的兴趣点
- 逐向导航(Turn-by-turn navigation)(GPS)
getCurrentPosition() 方法 - 返回数据
getCurrentPosition()
方法在成功时返回一个对象。会始终返回纬度、经度和精度属性。如果可用,则返回其他属性:
属性 | 返回 |
---|---|
coords.latitude | 以十进制数表示的纬度(始终返回)。 |
coords.longitude | 以十进制数表示的经度(始终返回)。 |
coords.accuracy | 位置精度(始终返回)。 |
coords.altitude | 平均海平面以上的高度(以米计)(如果可用则返回)。 |
coords.altitudeAccuracy | 位置的高度精度(如果可用则返回)。 |
coords.heading | 从北顺时针方向的航向(如果可用则返回)。 |
coords.speed | 以米/秒计的速度(如果可用则返回)。 |
timestamp | 响应的日期/时间(如果可用则返回)。 |
Geolocation 对象 - 其他有趣的方法
Geolocation 对象还有其他有趣的方法:
watchPosition()
- 返回用户的当前位置,并随着用户移动(如汽车中的 GPS)继续返回更新的位置。clearWatch()
- 停止 watchPosition () 方法。
下面的例子展示了 watchPosition()
方法。你需要准确的 GPS 设备来测试(比如智能手机):
实例
<script> const x = document.getElementById("demo"); function getLocation() { if (navigator.geolocation) { navigator.geolocation.watchPosition(showPosition); } else { x.innerHTML = "Geolocation is not supported by this browser."; } } function showPosition(position) { x.innerHTML = "Latitude: " + position.coords.latitude + "<br>Longitude: " + position.coords.longitude; } </script>
- 上一页 Web Fetch API
- 下一页 AJAX 简介