直接利用浏览器获取地理信息
<script>
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition,showError);
}
else
{
x.innerHTML="该浏览器不支持定位。";
}
}
function showPosition(position)
{
x.innerHTML="纬度: " + position.coords.latitude +
"<br>经度: " + position.coords.longitude;
}
function showError(error)
{
switch(error.code)
{
case error.PERMISSION_DENIED:
x.innerHTML="用户拒绝对获取地理位置的请求。"
break;
case error.POSITION_UNAVAILABLE:
x.innerHTML="位置信息是不可用的。"
break;
case error.TIMEOUT:
x.innerHTML="请求用户地理位置超时。"
break;
case error.UNKNOWN_ERROR:
x.innerHTML="未知错误。"
break;
}
}
</script>
- 对于安卓手机可以正常访问
- 对于苹果手机要求,必须网站为https
-
阿里云的SSL证书购买,可以使用免费DV SSL证书!
- SSL证书的在Apache中的安装方法
利用百度地图获取当前位置:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<title>Title</title>
<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=Oo4RtSpIOGQ8i1nlsVwdvRlIGsZamOzv"></script>
</head>
<body>
<div id="mymap" style="width: 900px;height: 500px"></div>
<script>
//实例化地图对象,并指定渲染目标
var map = new BMap.Map("mymap");
//位置对象
var point = new BMap.Point(116.404, 39.915);
//把地图进行渲染,指定地图级别(值大越精细)
map.centerAndZoom(point,12);
//利用point生成marker,并利用其标出自身位置
var marker = new BMap.Marker(point);
map.addOverlay(marker);
//获取设备的地理坐标
let geolocation = new BMap.Geolocation();
// 开启SDK辅助定位(不是必须,可以直接利用浏览器权限开启服务)
geolocation.enableSDKLocation();
geolocation.getCurrentPosition(function (r) {
console.log(r)//r对象已经包含了足够多的信息
//移动地图,到自身位置
map.panTo(r.point);
//利用point生成marker,并利用其标出自身位置
marker = new BMap.Marker(r.point);
map.addOverlay(marker);
//可以使用GeoCoder对象,进一步解析成为人性化数据
let geoCoder=new BMap.Geocoder();
geoCoder.getLocation(r.point,addrInfo=>console.log(addrInfo.address))
});
</script>
</body>
</html>
- 此方法并不需要网站是https协议,较为方便!
- 但需要注册百度的开发者帐号,并获取AccessKey 百度JS-API