知识点
相关文章
更多最近更新
更多HTML5 Geolocation【HTML5教程 - 第十篇】
2019-03-17 23:29|来源: 未知
HTML5 Geolocation用来定位用户的位置。
定位用户的位置
HTMl5 Geolocation API用来得到用户的地理位置。
因为这个可能和个人隐私相关,除非用户允许否则不能使用。
浏览器支持
IE9,Firefox,Chrome,Opera和Safari 5都支持这个特性。
注意:如果使用带有GPS的设备,例如iphone,Geolocation将会更加准确。
HTML5 - 使用Geolocation
使用getCurrentPosition()方法得到用户的位置。
下面这个例子是一个简单的返回用户所在地点经纬度的例子:
<script> var x=document.getElementById("demo"); function getLocation(){ if (navigator.geolocation){ navigator.geolocation .getCurrentPosition(showPosition); }else{ x.innerHTML="Geolocation is not supported by this browser."; } } function showPosition(position){ x.innerHTML="Latitude: " + position.coords.latitude + "<br />Longitude: " + position.coords.longitude; } </script>
代码说明:
首先检查Geolocation是否支持
如果支持,运行getCurrentPosition()方法,如果不支持,显示给用户信息
如果getCurrentPosition()方法成功了,返回一个坐标的对象到参数指定的方法(showPosition)中
showPosition()方法得到显示的经纬度
上面的例子是一个基本的Geolocation脚本,没有做错误处理。
处理错误和拒绝
getCurrentPosition()方法的第二个参数用来处理错误。指定一个方法当无法得到用户位置的时候来处理错误。
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; } }
错误代码如下:
权限拒绝:用户不需要执行Geolocation
位置不存在:无法得到用户位置
超时:操作超时
在Map中显示结果
为了在map中显示结果,你需要访问一个可以处理经纬度的地图服务,例如,GoogleMaps:
function showPosition(position){ var latlon=position.coords.latitude+","+ position.coords.longitude; var img_url="http://maps.googleapis.com/ maps/api/staticmap?center=" +latlon+"&zoom=14&size=400x300&sensor=false"; document.getElementById("mapholder") .innerHTML="<img src=""+img_url+""+img_url+"" />"; }
在上面的例子中,我们使用返回的经纬度来展示位置到Google地图中。
如何使用脚本来展示一个互动的地图,带有标记,缩放和拖动功能。
地理位置指定信息
这里我们演示了如何展示用户位置到地图上。然而,Geolocation也同样对于地理指定的信息非常有用。
例如:
最新的本地信息
展示用户周围的有趣地方
导航(GPS)
getCurrentPosition()方法 - 返回数据
如果成功getCurrentPosition()方法将返回一个对象。经纬度和准确的信息也会返回。其它属性如果存在也返回。
Property | Description |
---|---|
coords.latitude | The latitude as a decimal number |
coords.longitude | The longitude as a decimal number |
coords.accuracy | The accuracy of position |
coords.altitude | The altitude in meters above the mean sea level |
coords.altitudeAccuracy | The altitude accuracy of position |
coords.heading | The heading as degrees clockwise from North |
coords.speed | The speed in meters per second |
timestamp | The date/time of the response |
Geolocation 对象 - 其它方法
watchPosition()方法 - 返回目前的用户位置并且当用户移动后继续返回更新的位置(例如车里的GPS)。
clearWatch()方法 - 停止watchPosition()方法
下面的代码展示了如何使用watchPositin()方法,注意你需要一个准确的GPS设备来测试(例如,iphone)
<script> var x=document.getElementById("demo"); function getLocation(){ if (navigator.geolocation){ navigator.geolocation .watchPosition(showPosition); }else{ x.innerHTML="Geolocation is not supported by this browser."; } } function showPosition(position){ x.innerHTML="Latitude: " + position.coords.latitude + "<br />Longitude: " + position.coords.longitude; } </script>
本文链接:HTML5教程 - 第十篇:HTML5 Geolocation,转自:http://www.gbin1.com/tutorials/html5-tutorial/html5-geolocation/
相关问答
更多-
html5免费教程网盘下载[2022-07-06]
可以去千峰官网找自己喜欢的下载观看,网盘的不一定是你正好需要的。 -
HTML 和 HTML5 有什么不同吗?[2022-06-09]
HTML5是HTML标准的下一个版本 平时说的HTML应该是实现HTML4的版本 HTML5没有完全颠覆HTML4 做到完全兼容 相对于4 新加入了一些标签 比如 对某些标签添加了大量新的属性 HTML5和 CSS3.0都是 W3C最新的两个规范 没有 直接联系 但是为了做到最兼容新标准 这俩好基友会经常一起被提及 HTML5只是一种标准 可以用到所有用到html技术的地方 of course 可以用到WEB项目上 而且我觉得用到HTML5的项目都是很流行的项目 -
HTML5比以前的版本都有哪些改变,大家说说[2022-09-18]
不错!!!!!!!!! 顶 ! 顶 ! 顶 ! 顶 ! 顶 ! 顶 ! 顶 ! 顶 ! 顶 ! 顶 ! 顶 ! 无锡无缝钢管厂 无锡钢管厂 无锡无缝钢管 无锡钢管 无锡钢管价格 -
HTML5游戏很火么?到底说明是HTML5游戏啊?[2023-01-17]
只用HTML5和JS,CSS写的游戏(2048,围住神经猫,flappy bird),之前火过一段时间,现在还好,有发展前景,但是只适合轻中度游戏,不能做大型重度游戏 -
我的理解是,使用
行标题不仅仅是法律上的,而且被鼓励 据我所知,这在HTML 4(可能还有其前身)中始终是合法的,HTML5并没有改变。 W3C的HTML5验证器虽然仍然是实验性的,但没有报告任何警告或错误。 再次,我确信,Visual Studio正在使用的HTML5验证也是实验性的,因为HTML5本身尚未完成。 标记表格数据的HTML5规范 ,特别是第4.9.13节 ,显示了在 和使用... HTML5地理位置不起作用(HTML5 geolocation not working)[2022-06-12]
你的代码对我来说很完美,看到这个小提琴 。 您的浏览器是否支持地理定位? 根据您的浏览器,您应该在某处看到允许浏览器获取您的位置的通知。 您必须允许此操作才能使代码正常工作。 Your code works perfectly for me, see this fiddle. Is your browser supporting geolocation? Depending on your browser, you should see somewhere a notice to allow the bro ...说真的,有人说: 在HTML中,ids被认为是不好的做法,首选的方法是类 ......是完全错的! id和类有各自的使用区域,在某些情况下会重叠。 对于自动化测试和css,ID非常有用。 永远不要害怕使用它们! 作为您问题的答案,有几种选择。 要么在javascript中找到元素,又要分配一个按钮处理程序,或者只是添加一个onclick-function,并直接在按钮标记中分配它,如下所示:根据Geolocation API规范 ,没有任何功能。 即使将其保存在浏览器首选项中的选项也不会推送到您的代码中。 如果它真的很重要并且你真的必须意识到这一点,你必须为每个常见的浏览器编写一个浏览器插件并要求用户安装它。 但我不会怀疑它。 According to the Geolocation API Specification there isn't any function for this. Even the option to save it in the browser preferences ...主线程中的navigator对象包含geolocation属性 ,即访问所有地理定位功能的方式。 WorkerNavigator包含一个不同的navigator对象,称为WorkerNavigator ,它只包含主线程中navigator属性的子集。 由于WorkerNavigator缺少Geolocation对象,并且Geolocation对象无法序列化为 worker,因此您似乎无法在Web worker中使用Geolocation 。 相反,您必须从主线程进行报告。 The navigator obj ...HTML5历史教程(HTML5 History Tutorial)[2023-03-04]
https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history