获取位置信息

搜狐
<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script> 

var returnCitySN = {"cip": "210.13.118.49", "cid": "310000", "cname": "上海市"};
复制代码
腾讯
<script src='https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js'></script> 

var geolocation = new qq.maps.Geolocation("OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77", "myapp");
geolocation.getLocation(showPosition);

// 获取位置函数
function showPosition(position) {
console.log(position)
  localStorage.setItem('cityName',position.city)
  localStorage.setItem('provinceName',position.province)
  localStorage.setItem('distrinctName',position.district)
  localStorage.setItem('cityId',position.adcode)
  localStorage.setItem('addr',position.addr)
  localStorage.setItem('gps',JSON.stringify({lat:position.lat,lng:position.lng})) //火星坐标(gcj02),腾讯、Google、高德通用
};


复制代码
//html 腾讯地图组件 在线选址并获取地理信息
<iframe id="mapPage" width="100%" height="100%" frameborder=0 
   src="http://apis.map.qq.com/tools/locpicker?search=1&type=1&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77&referer=myapp">
</iframe> 

//js
 init:function(){
      var _this  = this;
      window.addEventListener('message', function (event) {
        // 接收位置信息,用户选择确认位置点后选点组件会触发该事件,回传用户的位置信息
        var loc = event.data;
        if (loc && loc.module == 'locationPicker') {//防止其他应用也会向该页面post信息,需判断module是否为'locationPicker'
          var str = loc.poiaddress;
          console.log(loc)
          _this.address = str
          console.log(loc.latlng)
          _this.coordinates = JSON.stringify(loc.latlng)
        }
      }, false);
  },
复制代码
H5定位
//IE9+
function getLocation(){ 
  if (navigator.geolocation){ 
    navigator.geolocation.getCurrentPosition(showPosition,showError); 
  }else{ 
    alert("浏览器不支持地理定位。"); 
  } 
}
function showPosition(position){ 
  var lat = position.coords.latitude; //纬度 
  var lag = position.coords.longitude; //经度 
  alert('纬度:'+lat+',经度:'+lag); 
} 
function showError(error){ 
  switch(error.code) { 
    case error.PERMISSION_DENIED: 
      alert("定位失败,用户拒绝请求地理定位"); 
      break; 
    case error.POSITION_UNAVAILABLE: 
      alert("定位失败,位置信息是不可用"); 
      break; 
    case error.TIMEOUT: 
      alert("定位失败,请求获取用户位置超时"); 
      break; 
    case error.UNKNOWN_ERROR: 
      alert("定位失败,定位系统失效"); 
      break; 
  } 
}
复制代码

地理位置获取方式

Ip地址 这是一种比较不准确地获取地理位置的办法,很多时候获取的是ISP机房的位置,但是获取非常方便,没有什么限制。大多数时候,IP地址还是比较准确的,基本上能精确到某个小区或某个大楼,但是如果用户使用代理或者VPN,就可能导致非常大的偏差。

GPS 这是一种非常准确地获取地理位置的方法,GPS的精度可以达到10米左右。如果用来找人或者找建筑,基本上都在目视范围内。但是使用GPS还有一些限制:在室内使用时,信号不太稳定,搜索卫星的时间较长,会造成延时。使用GPS最大的障碍是:很多设备(比如笔记本电脑)基本上都不带GPS,而只有智能手机才有。

Wi-Fi基站 连接位置已知的公共Wi-Fi时,可以获得地理位置信息。这种定位的精度比较不错,而且还可以在室内定位。不过由于位置公开的Wi-Fi比较少,此种方法的适用范围比较少。从目前的各类科技新闻来看,北京、上海、广州将率先建立公共Wi-Fi基站,北京甚至在公交车上都已经设立Wi-Fi基站,这些也可以考虑到未来的应用中

GSM或CDMA基站 通过电话局基站定位,定位精度随基站密度变化,精度非常一般,而且只有手机才能使用,并且地理位置信息往往不太精确。

地理位置获取流程

由于地理位置信息涉及个人隐私,是受到法律保护的,因此,每当用户在使用地理位置信息时,提供地理位置获取服务的软件都应该遵守地理位置获取的技术流程,经由用户同意,才可以获取信息。在桌面浏览器上,此技术流程大致如下(在移动设备非浏览器环境下会略有差异):

  1. 用户打开需要获取地理位置的Web应用;
  2. 应用向浏览器请求地理位置,浏览器弹出询问窗口,询问用户是否共享地理位置;
  3. 假设用户允许,浏览器从设备查询相关信息;
  4. 浏览器将相关信息发送到一个信任的位置服务器,服务器返回具体的地理位置。

转载于:https://juejin.im/post/5c8b0ad36fb9a049c30c21f5

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值