仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1058|回复: 7
打印 上一主题 下一主题

[HTML5] html教程之HTML5实例教程:Geolocation工具使用

[复制链接]
灵魂腐蚀 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-15 22:59:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
HTML5开发的网页文档类型极其简单,就够了,记得5年前还在反复跟团队强调使用XHTML那段冗长的文档类型声明.破洛洛文章简介:跟着Opera10.6和Safari5的接踵公布,停止到今朝为止,W3C中一个名为Geolocation的API标准在一切非IE扫瞄器中都失掉了完成。复杂地说,Geoloaction的感化就是经由过程扫瞄器感知用户的地舆地位。
1.关于Geolocation工具跟着Opera10.6和Safari5的接踵公布,停止到今朝为止,W3C中一个名为Geolocation的API标准在一切非IE扫瞄器中都失掉了完成。复杂地说,Geoloaction的感化就是经由过程扫瞄器感知用户的地舆地位。
现实上,关于用户地舆地位的探测在互联网上早已有了良多案例,个中一个最多见的使用就是当在地点栏输出google.com并按下回车键的时分,google并没有把我们带向方才输出的地点,而是转向了google在我们所处区域的页面,好比年夜陆和喷鼻港用户会抵达google.com.hk,固然我们很吊唁google.cn,但这并非明天所要会商的话题。
假如说地舆地位的感知已成了一项成熟的手艺,那末紧接着的成绩就是Geolocation存在的意义是甚么?就我今朝对Geolocation的了解,我以为它存在的来由最少包括以下两点:
1.大众数据:今朝的地舆地位探测,其材料常常来历于服务商各自的数据,而利用扫瞄器内置的一致接口,将高效整合这一信息。
2.准确定位:不管是谷歌仍是谷姐们,完成定位的道理不过是经由过程IP地点来探测用户的地点地位,尽人皆知,IP的定位才能是对照差的,尽年夜多半情形下,它的准确度能到达数十千米就已不错了,除此以外,没有其余任何举措,不管是服务器端言语仍是客户真个JavaScript剧本,都没法从用户那边猎取到更多对定位有所匡助的信息。但是作为用户呆板上更加底层的扫瞄器,它将有权力安排其他有助于定位的设备,好比GPS和WIFI。GPS人人都已很熟习了,在旌旗灯号优秀的情形下,它能够准确到数米以内。而WIFI在国际基础上被废了,关于这项手艺提高的国度,WIFI的定位基础上能够准确到百米摆布,听说常常能够见到一些公司的人,成天甚么都不干,就开着小车各处晃,到一个热门(HotSpot),就纪录下以后的地舆地位,然后传回到公司的数据库。
该工具位于我们十分熟习的Navigator工具上面,能够经由过程navigator.geolocation来会见,固然后面也能够加上window.。不撑持geolocation的扫瞄器其实不包括这一工具,那末能够经由过程上面的代码来做才能检测,对分歧的扫瞄器做分歧的处置。
if(navigator.geolocation){
alert(你的扫瞄器撑持geolocation);
}else{
alert(你的扫瞄器不撑持geolocation)
}

在会见geolocation工具时,即挪用geolocation上面的办法时,扫瞄器会弹出提醒,扣问用户是不是允许网站供应的地位服务,只要在失掉用户允许事后,服务才会持续,不然将被中断,在稍后你将会懂得到,我们可以捕捉到用户回绝服务的举措。上面这张图分离是Chrome,Firefox和Opera在初度会见geolocation时,给用户的提醒:

2.猎取以后地舆地位---getCurrentPosition
当取得用户的允许事后,便统统停当。我们将经由过程geolocation下的getCurrentPosition办法来猎取用户的信息,这个办法是明天整篇文章的中心部分,也是geolocation一个十分主要的办法。
navigator.geolocation.getCurrentPosition(getPositionSuccess,getPositionError);
在下面的代码中,我们挪用了getCurrentPosition办法,并为其传送了两个参数,现实上这个办法能够承受三个参数,前两个参数是函数,最初一个是工具:第一个参数是乐成猎取地位信息的回调函数,它是办法独一必需的参数;第二个参数用于捕捉猎取地位信息堕落的情形,第三个参数是设置项。
当扫瞄器乐成猎取到用户的地位信息时,getCurrentPosition的第一个函数范例的参数将被挪用,一个position工具会被传进到挪用的函数中,这个工具中包括了扫瞄器传回的数据,这十分主要。
functiongetPositionSuccess(position){
varlat=position.coords.latitude;
varlng=position.coords.longitude;
document.write("您地点的地位:经度"+lat+",纬度"+lng);
}

是的,position工具包括了用户的地舆地位信息,该工具上面的coords子工具包括了用户地点的纬度和经度信息,经由过程position.coords.latitude能够会见纬度,而position.coords.longitude中寄存了经度的信息,用户的地位信息越准确,这两个数字前面的小数点越长。现实上,在Firefox中,position工具下还附带有另外一个address工具,这个工具包括这个经纬度下的国度名,乡村名乃至街道名。
functiongetPositionSuccess(position){
varlat=position.coords.latitude;
varlng=position.coords.longitude;
alert("您地点的地位:经度"+lat+",纬度"+lng);
if(typeofposition.address!=="undefined"){
varcountry=position.address.country;
varprovince=position.address.region;
varcity=position.address.city;
alert(您位于+country+province+省+city+市);
}
}

毛病捕捉:下面都是乐成猎取到用户地位信息的处置,可是呈现成绩的情形在所不免,当猎取用户的地位信息堕落时,传送到getCurrentPosition的第二个函数范例参数被挪用,一个包括详细堕落信息的工具会被传送出来,毛病将被捕捉。
functiongetPositionError(error){
switch(error.code){
caseerror.TIMEOUT:
alert("毗连超时,请重试");
break;
caseerror.PERMISSION_DENIED:
alert("您回绝了利用地位共享服务,查询已作废");
break;
caseerror.POSITION_UNAVAILABLE:
alert("敬爱的火星网友,十分抱愧,我们临时没法为您地点的星球供应地位服务");
break;
}
}

error工具上面,寄存了3个常量:
TIMEOUT暗示猎取信息超时。
PERMISSION_DENIED暗示用户选择了回绝了地位服务。
POSITION_UNAVAILABLE暗示地位不成知。
而每次堕落时error.code将指向3个常量当中的一个。
设置项:getCurrentPosition办法的第三个参数是一个工具,该工具影响了猎取地位时的一些细节。
enableHighAccuracy,它将告知扫瞄器是不是启用高精度设备,所谓的高精度设备包括但不范围于后面所提到的GPS和WIFI,值为true的时分,扫瞄器会实验启用这些设备,默许指为true,在这类情形下,扫瞄器会尽量地举行更加准确的查询,复杂地说,假如用户有可用的GPS设备,会前往GPS设备的查询了局,IP是最初的选择,关于挪动设备来讲,收集接进点(基站)也许成为另外一个选择,对此我还没有完整懂得,但依据测试,立即没有任何分外功效的手机,也可以失掉更为准确的查询了局。
timeout,超时,猎取地位信息时超越设定的这个时长,将会触发毛病,捕捉毛病的函数将被挪用,而且毛病码指向TIMEOUT
如许我们实验修正挪用getCurrentPosition时传送的参数
navigator.geolocation.getCurrentPosition(getPositionSuccess,getPositionError,{
timeout:5000//5秒超时
});

3.延续追踪地位---watchPosition
关于利用挪动设备的用户来讲,地位并非流动的,W3C固然也思索到了这一点,watchPosition是一个专门用来处置这一情形的办法,watchPosition被挪用后,扫瞄器会跟踪设备的地位,每次地位的变更,watchPosition中的代码都将会被实行。关于努力于挪动设备web开辟的同砚来讲,这个办法是及其主要的,它大概将会改动web挪动客户真个格式。
navigator.geolocation.watchPosition(refreshPosition);
下面的代码暗示,但设置地位产生改动时,refreshPosition将会被挪用。现实上watchPosition和getCurrentPosition几近千篇一律,一样包括了一个乐成猎取地位的回调函数,一个猎取失利的回调函数和一个设置项,区分仅仅是在触发的机会上。以是详细的办法就不再反复了。上面的代码暗示在每次地位产生改动时,挪用refreshPosition函数。
4.实例---与GoogleMap交互
接上去,我们经由过程一个实例,来详细使用一下Geolocation,实例的最后的效果是,猎取用户的地位,并经由过程GoogleMap在舆图上标志出来,当用户的地位产生改动后,更新之前在舆图上的标志到新的地位。起首我们筹办好DOM,并加载GoogleMap
<!--按钮,被点击时入手下手猎取用户地位信息-->
<inputtype="button"id="getPos"value="猎取我的地位"/>
<!--用来寄存反应给用户信息的div-->
<divid="info"></div>
<!--为GoogleMap筹办-->
<divid="map"></div>
<scripttype="text/javascript"src="http://maps.google.com/maps/api/js?sensor=false"></script>

接上去我们在JavaScript中猎取这些DOM,并为GoogleMap供应一个工具用来寄存舆图和标志。这些都是筹办事情,很烦,可是不能不做。
vardom={
btn:document.getElementById(getPos),
info:document.getElementById(info),
map:document.getElementById(map)
};
vargmap={
map:null,
marker:null
}

接上去监听按钮的事务,当按钮被点击的时分,将触发猎取用户的地位信息。在这里我们对扫瞄器举行了检测,假如不撑持Geolocation接口,将提醒用户,并中断进一步的举措。
dom.btn.onclick=function(){
if(navigator.geolocation){
dom.info.innerHTML="请守候查询了局前往";
dom.info.className="warn";
navigator.geolocation.getCurrentPosition(getPositionSuccess,getPositionError,{timeout:5000});
}else{
dom.info.innerHTML="抱愧,您所利用的扫瞄器不撑持Geolocation接口";
dom.info.className="warn";
}
}

在下面我们向getCurrentPosition传送了两个函数,如今我们来详细写这两个函数,起首是getPositionSuccess,当做功猎取到用户的地位信息时,这个函数被挪用,我们将在这时候更新页面上的显现值,并设置追踪用户的地位的函数,最初挪用GoogleMap的API在id为map的div中显现舆图,并在舆图上标志出用户确当前地位。
functiongetPositionSuccess(position){
varlat=position.coords.latitude;
varlng=position.coords.longitude;
dom.info.innerHTML="您地点的地位:经度"+lat+",纬度"+lng;
navigator.geolocation.watchPosition(refreshPosition);
//载进Google舆图
varlatlng=newgoogle.maps.LatLng(lat,lng);
varmyOptions={
zoom:16,
center:latlng,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
gmap.map=newgoogle.maps.Map(document.getElementById("map"),myOptions);
//向舆图中增加标志
gmap.marker=newgoogle.maps.Marker({
position:latlng,
map:gmap.map
});
}

关于毛病处置的函数,则十分复杂,能够参看后面的内容。我们来存眷一下追踪地位的函数,在这个函数中,我们及时更新显现信息,并更新舆图到用户所处的地位。
functionrefreshPosition(position){
varlat=position.coords.latitude;
varlng=position.coords.longitude;
varlatlng=newgoogle.maps.LatLng(lat,lng);
//重设舆图地位
gmap.map.setCenter(latlng);
dom.info.innerHTML=您地点的地位:经度+lat+,纬度+lng;
//重设标志地位
gmap.marker.setOptions({
position:newgoogle.maps.LatLng(lat,lng)
});
}

以上关于GoogleMap的代码不是很懂得的同砚能够到GoogleCode往看一下手册,这里只是很复杂的使用,有乐趣的同砚能够进一步延长。上面是这个Demo的最后的效果。
这个Demo在具有GPS功效的手机上,可以十分准确地定位,在我的测试中,在旌旗灯号优秀的中央,基础上可以定位到地点中央,而且地位追踪事情优秀。上面是我在手机上扫瞄本Demo的效果,平台是S60v5,扫瞄器OperaMobile10.1beta1。必要申明一点的是,OperaMobile恰是从这个版本入手下手撑持Geolocation的。

</p>
就在新标准备受瞩目之际,两大网络监督机构却起冲突。
飘灵儿 该用户已被删除
沙发
发表于 2015-1-17 20:08:14 | 只看该作者
这个过程其实就是交流的过程。所有的这些都需要花时间。在面对完全陌生的软件时,就要多花时间对其产生初步的印象。此外,多操作也是非常重要的。
柔情似水 该用户已被删除
板凳
发表于 2015-1-26 22:39:16 | 只看该作者
技术的学习如同长跑。只要越过极限,就会越跑越轻松。技术的学习其实并不像想象中那么可怕,任何技术都并不高深莫测。
再见西城 该用户已被删除
地板
发表于 2015-2-5 05:32:12 | 只看该作者
您在所见即所得网页编辑器进行网页制作和在WORD中进行文本编辑不会感到有什么区别,但它同时也存在着致命的弱点。
海妖 该用户已被删除
5#
发表于 2015-2-11 07:08:55 | 只看该作者
Dreamweaver是唯一提供Roundtrip HTML、视觉化编辑与原始码编辑同步的设计工具。它包含HomeSite和BBEdit等主流文字编辑器。
乐观 该用户已被删除
6#
发表于 2015-3-2 00:41:39 | 只看该作者
所见则所得网页编辑器的优点就是直观性,使用方便,容易上手.
admin 该用户已被删除
7#
发表于 2015-3-11 03:52:22 | 只看该作者
Dreamweaver在所见即所得添加链接,也可以先选中文字或图片然后在属性栏中的链接栏后的一个小圆圈,用鼠标点击小圆圈按住不放拖动出箭头然后指向文件即可。
简单生活 该用户已被删除
8#
发表于 2015-3-17 22:08:06 | 只看该作者
所见则所得网页编辑器的优点就是直观性,使用方便,容易上手.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 03:13

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表