从地理定位(一)了解了地理定位的原理及基本的知识,下面学习设置地理定位选项及地图的显示。
10余年的乌当网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整乌当建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“乌当网站设计”,“乌当网站推广”以来,每个客户项目都认真落实执行。设置地理定位选项
前面的学习已知道调用getCurrentPosition()时可以传入两个参数,实际上还可以设置第三个参数:
navigator.geolocation.getCurrentPosition( geolocationSuccess, geolocationFailure, {enableHighAccuracy:true, timeout:10000, maxmumAge:60000 } );下面解释下第三个参数的意义:
enableHighAccuracy
属性要求高精度的GPS位置检测。除非确实需要精确的坐标,否则不需要设置这个项(在移动手机上非常耗电),默认是false。
timeout属性设置在放弃之前等待位置数据的时间,以毫秒为单位,这里
10000
是指用户按下同意数据的选项时,最多等待10秒。否则放弃(超时)。
maxmumAge
属性用于缓存位置数据,比如把maxmumAge
设置为60000
毫秒,之前的数据最多保存1分钟,之后重新获得位置数据。这样做,是为当用户处于移动状态时,获得及时的位置数据(越精确的位置数据)。
地图显示
得到了位置数据,最有用的就是把自定义的数据点放在地图上。比如显示公司的位置,或是乘车路线。下面就在地图上显示我当前的位置:
链接到Google Maps API脚本,并把它放在使用地图功能的自定义脚本前头,如下:
用一个
你生活在哪?
这样就可以给它设置样式,申明地图的大小:
#mapSurface { width: 600px; height: 400px; border: solid 1px black; }使用Google Maps地图的准备工作都做好了,接下来应该考虑显示地图,这个例子是在页面加载时使用地图。
以下是页面加载时运行的代码,首先是创建地图,然后通过地理定位查找用户(这里是我)的位置:
var results; var map; window.onload = function() { results = document.getElementById("results"); //设置地图选项,这里设置了起始缩放级别和地图类型,要详细了//解可以看看Google Maps文档 var myOptions = { zoom: 13, mapTypeId: google.maps.MapTypeId.ROADMAP }; //使用前面设置的项来创建地图 map = new google.maps.Map(document.getElementById("mapSurface"), myOptions); //尝试取得用户的位置 if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( geolocationSuccess, geolocationFailure ); results.innerHTML = "定位已开始."; } else { results.innerHTML = "该浏览器不支持地理定位"; } }上面的代码创建了地图,但还不能再页面上看到它。因为还没有设置地理位置,要设置地理位置,得用Latlng对象创建一个坐标点,然后再通过地图的setCenter()方法把该点放到地图上。以下就是使用访客坐标创建坐标点并将该点放到地图上的代码:
function geolocationSuccess(position) { //把地理定位的位置转换为Latlng对象 location = new google.maps.LatLng(position.coords.latitude,position.coords.longitude); //在地图上显示该店 map.setCenter(location); }有了这些代码就就可以在页面上显示地图了。当然还可以在地图上添加一些辅助功能,比如其位置和气泡。比如创建信息气泡需要创建一个Info人Window对象,下面的代码就是在地图上创建信息气泡:
var infowindow = new google.maps.InfoWindow(); //创建信息气泡并设置其文本内容个地图坐标 infowindow.setContent("我在这里或是附近"); infowindow.setPosition(location); //显示地图气泡 infowindow.open(map); results.innerHTML = "现在你在地图上。";最后如果浏览器不支持地理定位,处理方法于此类似,可以用一个已知的坐标点(而不是获取的位置)来创建地图。
最后在浏览器上就可以看到如下的效果:
好吧,虽然不准确(我使用的是台式机通过有线连接接入Internet),但毕竟还是找出了我的大体位置。
小结:Internet的发展带来前所未有的便利,但是这些技术的发展是我们的位置暴漏无疑,尤其是使用智能手机接入网时。只要你接打电话,或是上网,或是使用内置GPS的设备等,我们的位置就已经告诉了Internet。
需要学习的朋友可以下载附件。
附件:http://down.51cto.com/data/2362801另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。