摘要:在本教程中,您将学习如何使用地理位置 API,以便在您同意共享的情况下,允许 Web 应用程序访问您的位置。
什么是地理位置 API
地理位置 API 允许 Web 应用程序在您同意共享的情况下访问您的位置。
为什么使用地理位置 API
地理位置 API 对于需要根据用户位置工作的 Web 应用程序非常有用,例如搜索引擎、电子商务网站、地图和天气应用程序。
例如,电子商务网站可以要求您共享您的位置。一旦获得信息,它就可以根据您的位置向您显示产品可用性以及价格和折扣。
类似地,像 Google.com 这样的搜索引擎可以根据您的搜索词和位置返回本地搜索结果。
例如,如果您在旧金山并搜索披萨,Google 会显示您附近的一系列披萨餐厅。
地理位置对象
地理位置 API 可通过 navigator.geolocation
对象获得。
检查是否支持地理位置 API
要检查浏览器是否支持它,您可以测试 geolocation
属性是否存在于 navigator
对象上,如下所示
if (!navigator.geolocation) {
console.error(`Your browser doesn't support Geolocation`);
}
Code language: JavaScript (javascript)
获取当前位置
要获取用户的当前位置,您可以调用 navigator.geolocation
对象的 getCurrentPosition()
方法。
getCurrentPosition()
方法发送一个异步请求以检测用户的位置,并查询定位硬件(如 GPS)以获取最新数据。
getCurrentPosition()
方法可能会成功或失败。它接受两个可选回调函数,它们将分别在每种情况下执行。
如果 getCurrentPosition()
成功,您将获得用户的定位信息,以 GeolocationCoordinates
对象的形式。
GeolocationCoordinates
对象具有表示位置的 latitude
和 longitude
属性。
JavaScript 地理位置示例
以下示例展示了一个 具有一个按钮的简单应用程序。当您点击该按钮时,浏览器会要求您共享您的位置。如果您同意,它将显示您当前的经度和纬度。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript Geolocation Demo</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="container">
<button id="show" class="btn">Show my location</button>
<div id="message"></div>
</div>
<script src="js/app.js"></script>
</body>
</html>
Code language: HTML, XML (xml)
以下是 app.js 文件的内容
(() => {
const message = document.querySelector('#message');
// check if the Geolocation API is supported
if (!navigator.geolocation) {
message.textContent = `Your browser doesn't support Geolocation`;
message.classList.add('error');
return;
}
// handle click event
const btn = document.querySelector('#show');
btn.addEventListener('click', function () {
// get the current position
navigator.geolocation.getCurrentPosition(onSuccess, onError);
});
// handle success case
function onSuccess(position) {
const {
latitude,
longitude
} = position.coords;
message.classList.add('success');
message.textContent = `Your location: (${latitude},${longitude})`;
}
// handle error case
function onError() {
message.classList.add('error');
message.textContent = `Failed to get your location!`;
}
})();
Code language: JavaScript (javascript)
它是如何工作的。
首先,使用 querySelector()
方法选择 #message
元素。
接下来,如果浏览器不支持地理位置 API,则显示错误消息。
然后,选择按钮并附加点击事件处理程序。点击事件处理程序调用 navigator.geolocation
对象的 getCurrentPosition()
方法以获取用户的当前位置。
onSuccess
和 onError
回调函数用于处理成功和错误情况。
之后,定义 onSuccess()
函数,该函数从 position.coords
中获取经度和纬度,并在具有 message
标识符的 <div>
元素上显示它们。
最后,定义 onError()
函数,该函数在 getCurrentPosition()
方法失败时显示错误消息。
请注意,app.js 中的所有代码都封装在一个 IIFE 中。
测试应用程序
以下说明了如何使用 Google Chrome 运行 Web 应用程序。如果您使用的是其他浏览器,例如 Firefox、Edge 或 Safari,您应该能够按照这些步骤进行操作。
当您点击显示我的位置按钮时,浏览器会要求您共享您的位置,如下所示

如果您点击允许按钮,您将看到您的位置,如以下图片所示

请注意,您的位置可能会有所不同。
要更改浏览器设置,您可以点击位置图标,然后点击管理按钮

它将显示一个类似的屏幕

如果您点击垃圾桶图标,允许的网站将被删除。
如果您 刷新应用程序 并点击显示我的位置按钮,它将再次要求您共享您的位置。
这次,如果您点击阻止按钮

…应用程序将显示错误消息

摘要
- 地理位置 API 允许 Web 应用程序访问用户当前的位置。
- 使用
navigator.geolocation.getCurrentPosition()
方法获取用户的当前位置。