浏览器中用JavaScript获取地理位置,可以用navigator.geolocation实现。
navigator.geolocation有三个方法:
- getCurrentPosition(sCallback, [eCallback] , [options]) 获取设备的位置
- watchPosition(sCallback, [eCallback] , [options]) 轮询设备的位置
- clearWatch(watchID) 用于停止watchPosition()轮询
成功回调(sCallback)中参数是一个对象,属性有timestamp和coords。
coords有以下七个只读属性:
- latitude 纬度
- longitude 经度
- altitude 高度
- accuracy 精确度
- altitudeAccuracy 高度的精确度
- heading 当前移动的角度方向
- speed 当前对地速度
简单实例,获取经纬度:
<button onclick="getLocation()"> 获取当前地理位置 </button>
<p id="pos">
</p>
<script>
var pos = document.getElementById("pos");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(callback);
} else {
pos.innerHTML = "浏览器不支持geolocation属性!";
}
}
function callback(position) {
pos.innerHTML = "纬度: " + position.coords.latitude + "<br />经度: " + position.coords.longitude;
}
</script>拿到经纬度后,可借助第三方服务商(如百度地图、高德地图)的SDK,获取行政区域,省、市、区等。
切记,并不是所有设备都支持navigator.geolocation,一定要注意兼容性。
详细API见:https://w3c.github.io/geolocation-api/