HTML5 Geolocation【HTML5教程 - 第十篇】

2019-03-17 23:29|来源: 未知

HTML5 Geolocation用来定位用户的位置。

定位用户的位置

HTMl5 Geolocation API用来得到用户的地理位置。

因为这个可能和个人隐私相关,除非用户允许否则不能使用。


浏览器支持

iefirefoxchromeoperasafari

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()方法将返回一个对象。经纬度和准确的信息也会返回。其它属性如果存在也返回。

PropertyDescription
coords.latitudeThe latitude as a decimal number
coords.longitudeThe longitude as a decimal number
coords.accuracyThe accuracy of position
coords.altitudeThe altitude in meters above the mean sea level
coords.altitudeAccuracyThe altitude accuracy of position
coords.headingThe heading as degrees clockwise from North
coords.speedThe speed in meters per second
timestampThe 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是HTML标准的下一个版本 平时说的HTML应该是实现HTML4的版本 HTML5没有完全颠覆HTML4 做到完全兼容 相对于4 新加入了一些标签 比如 对某些标签添加了大量新的属性 HTML5和 CSS3.0都是 W3C最新的两个规范 没有 直接联系 但是为了做到最兼容新标准 这俩好基友会经常一起被提及 HTML5只是一种标准 可以用到所有用到html技术的地方 of course 可以用到WEB项目上 而且我觉得用到HTML5的项目都是很流行的项目
  • 不错!!!!!!!!! 顶 ! 顶 ! 顶 ! 顶 ! 顶 ! 顶 ! 顶 ! 顶 ! 顶 ! 顶 ! 顶 ! 无锡无缝钢管厂 无锡钢管厂 无锡无缝钢管 无锡钢管 无锡钢管价格
  • 只用HTML5和JS,CSS写的游戏(2048,围住神经猫,flappy bird),之前火过一段时间,现在还好,有发展前景,但是只适合轻中度游戏,不能做大型重度游戏
  • 我的理解是,使用行标题不仅仅是法律上的,而且被鼓励 据我所知,这在HTML 4(可能还有其前身)中始终是合法的,HTML5并没有改变。 W3C的HTML5验证器虽然仍然是实验性的,但没有报告任何警告或错误。 再次,我确信,Visual Studio正在使用的HTML5验证也是实验性的,因为HTML5本身尚未完成。 标记表格数据的HTML5规范 ,特别是第4.9.13节 ,显示了在和使用 来排列行数据: ...
  • 你的代码对我来说很完美,看到这个小提琴 。 您的浏览器是否支持地理定位? 根据您的浏览器,您应该在某处看到允许浏览器获取您的位置的通知。 您必须允许此操作才能使代码正常工作。 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 ...
  • https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history