Web应用实际使用时候,geo位置数据是怎么得到的,如何解决偏差问题?


Web应用实际使用时候,geo位置数据是怎么得到的,如何解决偏差问题?

PC端, ip转换得到吗?

手机端/App移动设备, 呢?

geolocation

SaKamo. 11 years, 3 months ago

html5定义了获取位置信息的接口:


 navigator.geolocation.getCurrentPosition(function(d){console.log(d)})

chrome会返回数据:


 accuracy: 60
altitude: null
altitudeAccuracy: null
heading: null
latitude: 30.283931199999998
longitude: 120.07435830000001
timestamp: 1420358632328

风雨不同舟- answered 11 years, 3 months ago

是这样的,web端获取定位主要有以下这么几种形式: 基站定位(蜂窝网络)(手机,100-300m)、gps定位(手机端,10m左右)、wifi定位(用过ap热点找到坐标 30-200m)(手机or pc),ip定位(pc).大概就这么几种。现在各大浏览器又出了什么浏览器定位,用的就是上述定位方式加上他的资源库,这个资源库是由用户将它的地理位置上传所构造的。好处是,有的用户在当前情况下只有某一种不精确的定位方式,通过该资源库,可以获得更精确的定位。定位这个返回的坐标有几种测量单位。google用的和百度用的不一样。中国有法律规定定位的精度(要求有一定偏差)。

真黑黑黑黑 answered 11 years, 3 months ago

一般步骤

  1. 不管是PC端还是移动端,优先使用浏览器自带的相关API;
  2. 如果浏览器不支持(如IE8)或定位失败(用户拒绝或定位超时等其他原因),采用IP地址定位的方法进行降级处理。
  3. 调用第三方的接口将位置信息进行转换,如百度地图的 http://developer.baidu.com/map/jsdemo.htm#a5_2

示例代码:


 javascript


 // 一些参数 ref http://diveintohtml5.info/geolocation.html#options
var options = {
};

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(success, fail, options);
} else {
  // IP定位
}

// 定位成功的回调
// `position` ref http://diveintohtml5.info/geolocation.html#the-code
function success(position) {
}

// 定位失败的回调
// `err` ref http://diveintohtml5.info/geolocation.html#errors
function fail(err) {
  // 进行错误处理,选择是否进行IP降级定位
}

参考:

今晚寂寞吗 answered 11 years, 3 months ago

Your Answer