JS一千问(19):如何获取当前地理位置?

浏览器中用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/

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注