HTML5之地理定位(二)
admin
2023-06-11 16:21:46
0次

从地理定位(一)了解了地理定位的原理及基本的知识,下面学习设置地理定位选项及地图的显示。

设置地理定位选项

前面的学习已知道调用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脚本,并把它放在使用地图功能的自定义脚本前头,如下:


  
  Geolocation Map

...
  • 用一个

    元素盛放动态生成的地图,如下:


  

你生活在哪?

这样就可以给它设置样式,申明地图的大小:

#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 = "现在你在地图上。";

最后如果浏览器不支持地理定位,处理方法于此类似,可以用一个已知的坐标点(而不是获取的位置)来创建地图。

最后在浏览器上就可以看到如下的效果:

HTML5之地理定位(二)

HTML5之地理定位(二)

好吧,虽然不准确(我使用的是台式机通过有线连接接入Internet),但毕竟还是找出了我的大体位置。

小结:Internet的发展带来前所未有的便利,但是这些技术的发展是我们的位置暴漏无疑,尤其是使用智能手机接入网时。只要你接打电话,或是上网,或是使用内置GPS的设备等,我们的位置就已经告诉了Internet。

需要学习的朋友可以下载附件。

附件:http://down.51cto.com/data/2362801

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...