HTML5提供对用户地理位置进行定位的功能。
可以使用:navigator.geolocation.getCurrentPosition() 方法获取用户的当前经度和纬度
方法如下:首先判断浏览器是否支持地理定位,然后运行getCurrentPosition(),如果getCurrentPosition()运行成功,则向返回一个coordinates对象,通过这个对象获取用户当前的经度(latitude)和纬度(longitude)。
获取经度纬度的代码如下:
上面代码的运行结果如下: 获取经纬度<!DOCTYPE html> <html> <body> <p id="demo">点击这个按钮,获得您的坐标:</p> <button onclick="getLocation()">试一下</button> <script> var x=document.getElementById("demo"); function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition,showError); } else{x.innerHTML="Geolocation is not supported by this browser.";} } function showPosition(position) { x.innerHTML="Latitude: " + position.coords.latitude + "<br />Longitude: " + position.coords.longitude; } 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; } } </script> </body> </html>
以上错误代码是如下含义:
Permission denied - 用户不允许地理定位
Position unavailable - 无法获取当前位置
Timeout - 操作超时
如果想在静态地图中显示你的位置,只需要使用以下的URL即可:
http://maps.googleapis.com/maps/api/staticmap?enter=经度,纬度&zoom=14&size=400x300&sensor=false
示例程序:静态谷歌地图显示位置
还可以使用拖拽的交互式的谷歌地图显示您的当前位置,或者以特定的经度和纬度为参数,显示带有标记、缩放和拖曳选项的交互式地图:
交互式谷歌地图代码如下:
<!DOCTYPE html> <html> <body> <p id="demo">点击这个按钮,获得您的位置:</p> <button onclick="getLocation()">试一下</button> <div id="mapholder"></div> <script src="http://maps.google.com/maps/api/js?sensor=false"></script> <script> var x=document.getElementById("demo"); function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition,showError); } else{x.innerHTML="Geolocation is not supported by this browser.";} } function showPosition(position) { lat=position.coords.latitude; lon=position.coords.longitude; latlon=new google.maps.LatLng(lat, lon) mapholder=document.getElementById('mapholder') mapholder.style.height='250px'; mapholder.style.width='500px'; var myOptions={ center:latlon,zoom:14, mapTypeId:google.maps.MapTypeId.ROADMAP, mapTypeControl:false, navigationControlOptions:{style:google.maps.NavigationControlStyle.SMALL} }; var map=new google.maps.Map(document.getElementById("mapholder"),myOptions); var marker=new google.maps.Marker({position:latlon,map:map,title:"You are here!"}); } 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; } } </script> </body> </html>以上代码的运行结果: 交互式谷歌地图显示位置
getCurrentPosition()返回的属性除了能获得经纬度外,还有以下属性: