当前位置:首页 > 行业知识 > 综合

lbs是什么单位

关注:48 发布时间:2021-10-19 21:49:01

lbs简史

位置服务是互联网的基础设施。几乎每一个互联网巨头都投入了大量的资源进行开发,让我们的生活变得如此便捷。换句话说,就是这么常用,跟水、电、空气一样。我们对它们几乎没有感知,但我们在地方都使用它。很多时候,当我们安装一个新的应用程序时,我们可能会被要求获得这个权限。不付出,很多事情就无法进行下去。毕竟什么是lbs?一开始以为是地图。但这只是可视化的一部分,另一半是定位服务。所以lbs的英文全称是基于位置的服务,基于位置。

lbs起源于美国的一次绑架事件。1993年11月,一个叫詹妮弗库恩的女孩在美国被绑架并杀害。在这个过程中,库恩用手机拨打了911,但911呼叫中心无法通过手机信号确定她的位置。此次事件的结果是,美国fcc(美国通信委员会)于1996年发布行政命令e911,要求强制建设公共安络,即可以通过无线信号随时随地跟踪用户位置,位置精确到50-300米。

此外,2001年的911事件也让美国公众认识到了就地服务的重要性。因此,为了实现e911目标,基于位置的服务业务逐渐发展起来。从某种意义上来说,e911促使移动运营商投入大量资金和力量研究定位服务,催生了lbs市场。

在pc时代,普通人很少从这项服务中受益。大家对它的感受是搜索地图,谷歌地图,高德地图,腾讯地图。必要的话直接打开网站了解这个城市有多少个县和景点,外部网站很少引用它的api。所以在pc时代,lbs相当于地图服务。

在移动时代,手机可以用更多的内置硬件获取更多的地理信息,因此更加精确和实时,而不是像pc时代那样通过ip地址来解决。手机系统汇总了这些硬件,直接给出了可用的地名(省、市、县、街道的名称)、经纬度,让我们可以在上面提供更具体的服务。于是,mobike,路边网,公众评论,美团外卖,切客,这些应用和微信活动就诞生了,分享实时位置,撼动微信内置的这些易用功能。

换句话说,在pc时代,lbs于展示某个区域,上面有一些广告告诉你上面有哪些超市和酒店。在移动时代,每个人都分享(或直接暴露)自己的位置信息和其他适销对路的信息(照片、爱好、酒店可以提供的服务),这些信息被app有效利用,成为自行车分享、交友购物、快递等强互动服务。

底层技术一览

说到地理信息,人们往往会想到gps。gps只是lbs获取位置信息的一种手段。刚才我们通过h5 api获得了经纬度,这可能是很多手段之一。一般来说主要包括gps,基站,wifi,ip。

gps定位

gps是一种卫星定位系统,早期特指美国。70年代开发,历时20年,耗资200亿美元,1994年竣工。几乎所有的手机都有gps接收机,所以可以免费使用它的低精度民间定位服务。为了防止在战争中被他人控制,欧盟、俄国和中国也发射了卫星来组装自己的定位系统服务,这些服务分别被称为伽利略、glonass和bds。比较近,美国商业天才马斯克也通过他的火箭成功发射了两波低地球轨道卫星,并建立了starlink,该公司可能成为未来比较大的卫星网络提供商,可以轻松地为整个提供定义。

一般来说,国产手机可以同时接收这四个系统的服务。

说一下,gps的技术原理。已知点a、b和c的坐标以及这些点到点d的距离(分别为d0、d1和d2),求点d的坐标.我们可以通过下面的三次二次方程来求解唯*解(公式1)。

gps的原理就是基于上面的公式。定位系统在空间有24颗卫星,分布在轨道倾角为55度的六个中距离近圆形轨道平面(每个轨道平面四颗)。卫星的分布使得在时候观察地方的四颗以上的卫星成为可能。

我们手机上的接收器不断接收来自每个卫星si的消息mi,其中不仅包含卫星si的空间坐标,还包含卫星发送消息的时间ti。接收到mi后,接收机可以根据本地接收机的时间与卫星发送报文的时间之差计算距离di:di=c * t;其中c是光速,t是时差。但是由于各种原因,包括大气、建筑物、时钟误差等因素,光速c和时差t都有误差,di的结果非常不准确,所以需要加上误差项来修正计算,假设每个卫星的误差项都是相同的(等式2)。

除了空间位置的三个参数,现在误差项更多,还有4个参数需要求解,至少需要4颗卫星才能求解(公式3)。

gps的缺点也很明显,容易被干扰,比如有和gps频率相同的无线电信号(1500mhz左右),或者室内和地下室,因为墙壁使用了大量的铁、陶瓷、碳纤维等吸波材料。

基站定位

基站定位原理类似雷*。雷*定位的过程是这样的:通过发射雷*波,击中目标并返回,然后根据时间和波速计算出目标的位置。同理,基站也相当于雷*,不断向外辐射。我们的手机一直处于多个基站的信号覆盖之下。移动电话将“测量”不同基站的下行导频信号,以获得每个基站的到达时间(toa)或tdoa(到达时间差)。根据该测量结果,结合基站(包含在信号中)的坐标,可以计算出手机的坐标值。

那么就可以按照上面的三点定位公式来计算。

但是和gps一样,它有一个明显的缺点,不能穿透建筑物,不能实现室内定位。随着越来越多的室内定位的商业场景,比如地下车库导航,商场找店铺找商品,甚至小孩走失,迫切需要室内定位。于是,wifi、蓝牙、uwb等技术诞生了。

wifi蓝牙定位

不知道大家有没有用过美团的mobike和滴滴的绿橙单车,总让你开蓝牙。wifi和蓝牙的固定拉技术差不多,只是信号编码和频率不同。我们用wifi来说明。

打开wifi,我们的手机就变成了一个wiki热点(ap),接收其他ap(可以是其他手机,也可以是无线路由器)的信号,并传输自己的信号。在城市,wifi热点越来越多,每个点总能接收到5~20个ap信号。

ap拥有上唯*的mac地址,一般来说,无线ap在一段时间内是不会移动的。当wi-fi开启时,手机可以获得ap广播的mac地址,无论是否加密,是否连接,甚至信号强度不足以在无线信号列表中显示。

手机将这些采集到的信号发送到定位引擎,通过朴素贝叶斯算法计算出自己的位置。因为这个公式超出了普通人的理解水平,我就不解释了。感兴趣的人可以在线搜索文章基于朴素贝叶斯的定位算法并自学:https://blog.csdn.net/weixin_33928137/article/details/90708754

总的来说,蓝牙比wifi准确可靠得多。

ip定位

ip定位技术通过目标主机的ip地址来定位目标主机的实际物理地址,广泛应用于定位相关服务,如定向广告、在线安全监控、网络漫游等

总的来说,这是一种不可靠的定位技术。因为ip地址资源宝贵,大部分用户都是通过动态ip地址上网的。动态意味着每次上网,电信都会随机

给你分配一个ip地址。静态就是每次上网都用一个地址。一般来说,普通宽带是动态ip,也有直接光纤接入的静态ip。

假设我们的ip是静态的,怎么才能找到你的位置?我们知道,ip地址本质上是一个32位无符号int,范围从0到2 ^ 32,总共约有43亿个ip地址。一般以192.168.0.1的形式表示。

知识产权地址的划分由rir机构管理。负责亚洲的ip地址分配,apnic总部设在澳大利亚墨尔本。所有rir组织都提供有关知识产权地址划分的注册信息,即whois记录。您可以在rir主要机构提供的whois查询页面查看,或使用whois命令查询:

ip的whois信息包含申请使用ip的运营商的信息,国籍和省份的信息将包含在网段描述信息中。但是我们还是需要对每一条街道都做到精准,所以我们需要通过各种手段来完善这个ipto地理数据库。比如我们举报安装宽带的时候,提交的是用户的地理位置;通过爬虫,挖掘网站上的电话、地址、传真等信息来定位地理位置;根据网络往返时间,得到近似结果。通过测量从ip到每个已知参考点的往返时间,向后时延被计算为定位主机的地理距离。

所以ip定位技术背后需要庞大的数据库,需要结合其他技术来推断你的位置。以搜索为例,它有一个高精度的ip定位api,因为我们经常使用它的服务,比如搜索搜索、搜索地图、搜索网盘,它在背后偷偷收集我们的数据,构建每个用户的头像。我觉得比搜索线下服务更有钱的阿里,比我们自己更了解我们。

搜索的api带地理信息

函数getxybyip {

var url=" https://api . map . baidu.com/location/ip?ak=hqi0 ehpvolllflstznglyvqlo 56 un 3 coor=bd 09 ll ";//搜索

$.品牌ax({

url:url,

类型: "开机自检",

数据类型: "jsonp ",

async: false,

cache:为真。//缓存是否可以为假

success:函数(数据){

alert(json . stringify(data));

},

错误:函数(数据){

//alert(json . stringify(data));

}

});

}

或将地址直接粘贴到浏览器中:

微信小程序与lbs

综上所述,打造lbs的基石需要巨额的资金投入。你需要发射卫星,安排大量光纤,搭建基站(基站密度为5g、4g、3g、2g),建立ip数据库,并与地理信息、商业信息链接。这就需要不同梯度的公司来承担这些任务和费用。

国内互联网公司一般做比较后一步,为用户提供第三方数据。比较早的地图公司搜索、腾讯、高德可以提供地图展示、ip信息、街道、店铺地址等综合数据。而小众领域,比如楼层的内部地图和辅助数据,是由成千上万的公司提供的。

在早期的pc时代,很少有公司能结合lbs向用户提供本地服务。移动时代,随着内卷化日益严重,lbs再次被提及。比如摇一摇找附近的人,单车合租,点吃的,可以结合lbs服务,让你的app脱颖而出。

腾讯目前是比较人性化的,从服务api、基础地图服务、插件、行业解决方案等层面为不同场景需求的开发者服务。从渠道来看,微信小程序是其中比较受欢迎的分销渠道。腾讯定位服务全面拥抱小程序生态,帮助小程序插上地图的“翅膀”!

相反,大部分微信小程序开发者的技能都很弱,很可能找不到这些对应的小公司,也很可能无法处理原始的第三方数据(因为涉及专业术语)。所以按照界面的复杂程序,微信小程序可以分为三个梯度:功能单一的api、设计性强的标签式组件、完成度高、功能丰富的微信插件。

原料如下:

获取地址信息的api(包括监控变更和停止监控)

wx .叠梁位置更新

wx . startlocationupdatebackground

wx.startlocationupdate

wx.openlocation

wx.onlocationchange

wx.offlocationchange

wx.getlocation

wx.chooselocation

用于创建地图实例和地图实例的相关操作的应用编程接口

wx.createmapcontext

mapcontext . getcentral location

mapcontext.getregion

mapcontext.getrotate

mapcontext.getscale

mapcontext.getskew

mapcontext.includepoints

mapcontext.movetolocation

mapcontext.translatemarker

获取用户方向的应用编程接口,包括指南针和陀螺仪

wx.stopcompass

wx.startcompass

wx.oncompasschange

wx.offcompasschange

wx . stop陀螺仪

wx .start陀螺仪

wx.ongyroscopechange

wx.offgyroscopechange

标签组件,一个

地图

微信小程序插件,有以下三种:

路线规划:根据起点和终点智能规划比较佳出行路线,支持多种出行方式。

地铁地图:支持全国各城市地铁线路静态显示、信息查询、路线检索、规划等功能。

地图选择:快速准确的选择并确认自己当前的位置,并将相关的位置信息返回给开发者。

详情请见此处:

https://lbs.qq.com/miniprogram_plugin/index.html

开发实践

其实从另一个角度来说,这些api是根据人的情况来划分的,分别是业余开发者,大师开发者,本地开发者。

业余开发者基本上可以使用wx.openlocation、wx.getlocation、wx.chooselocation三个api调用地图组件,从而获取自己的位置、某个地方的经纬度以及地图上显示的需求。

我们打开微信开发者工具,搭建一个小程序。

然后我们在index.wxml中添加一个按钮

48b . jpeg " data-original=" https://5 b 0988 e 595225 . cdn . sohucs.com/images/20200415/d 00 b 0 fd 0e 1a 947 e4 bf 309212 a 92 f 348 b . jpeg "

视角

按钮绑定="getposition "打开地图选择地址/按钮

/view

上面绑定了一个事件getposition,需要在index.js中添加,getposition很简单,就是获取用户的当前位置。

getposition:函数{

wx.getlocation({

:型" gcj02 ",

成功:功能(res) {

var纬度=res.latitude //latitude

var经度=res .经度//经度

var speed=res.speed //speed,-1表示不动,可能是躺在床上写文章。

var精度=res.accuracy//位置的精度

var海拔=res . height//height,单位为m。

垂直精度=res.verticalaccuracy//垂直精度

console.log(res)

}

})

},

然后,当你按钮时,你发现你需要给app.json添加一些东西

{

" pages": [

“页面/索引/索引”,

"页面/日志/日志"

],

" window": {

" background text style " : " light ",

" navigationbarbackgroundcolor " : " # fff ",

“navigationbartitletext”:“微信”,

" navigationbartextstyle": "黑色"

},

“许可”: {

" scope.userlocation": {

“desc”:“别担心!您的位置信息将仅用于当前小程序。

}

},

" sitemap location " : " sitemap . json "

}

然后我们按钮,我们会发现地址被输入。

这时候我们需要用wx.openlocation(object)打开地图,看到具体位置,有点像webview,一下子就覆盖了页面。

wx.openlocation({

纬度: res .纬度,

经度: res .经度,

scale: 18,//比较大只能这样

完成:功能{

console.log("complete: ",参数);

}

});

如果我们想选择一个地方,就需要选择位置(对象)*。我们在视图中添加了另一个按钮和占位符。

视角

按钮绑定="选择位置"选择位置/按钮

查看您选择的位置:{{address}}/view

/view

在index.js中,您需要将address属性添加到数据中,然后添加一个chooseposition方法

选择位置:功能{

变量=这个

wx.chooselocation({

成功:功能(res) {

//成功

console.log(res,“位置”)

that.setdata({

地址: res.address

})

}

})

},

效果如下:

回过头来看,用这三个api调用的地图的精度是非常有限的。当我们使用自行车共享时,什么小蓝自行车和美团自行车可以精确到十米以上,但现在这张地图可能超过300米。是否与将wx.getlocation的类型参数设置为gcj02有关?gcj02是地图坐标系标准,目前国内以以下三种坐标系为主:

地球坐标(wgs84)

国际标准,从gps设备获取数据的坐标系。

国际地图提供商使用的坐标系。

火星坐标(gcj-02)也叫国家测绘局的坐标系

根据中国标准,从中国银行的移动设备定位获得的坐标数据使用该坐标系。

按照国家规定,国内发布的各类地图系统(包括电子表格)必须至少使用gcj-02对地理位置进行加密。

搜索坐标(bd-09)

搜索标准,搜索sdk,搜索地图,地理编码使用。

抛开搜索坐标,我们来看看wgs84和gcj-02的区别。虽然微信小程序的getlocation也支持wgs84,但是打开地图使用openlocation只能使用gcj-02,相当于隐式强制使用gcj-02。由于国家文件导航电子地图安全处理技术基本要求对此有规定,标准号为gb 20263—2006,本标准第4.1节规定:

4.1导航电子地图在出版、销售、传播、展示和使用之前,必须对空间定位技术进行处理。

这种所谓的“空间定位技术处理”是将地图从gps坐标中使用的wgs-84坐标系转换到火星坐标系(gcj-02)。换算后的偏差一般为300 ~ 500m。也就是说,如果把你手机gps得到的坐标直接叠加在“火星坐标系”的地图上,会有300~500米的偏差。早期的高德地图在野外是不准确的,这就是为什么没有其他数据可以在野外纠正它。

这是个坑。为什么要这么做?国家告诉你,是为了保守国家秘密,维护国家安全。据知乎里的文章说,美国导弹现在可以精确到3.5米,所以需要300米以上的偏差才能保证现有地图信息不能被美国直接使用。但是,美国人不擅长使用你的地图信息。人们有锁眼间谍卫星。根据nro解密报告,1971年发射的kh-9卫星,在地面上至少能分辨0.6米的物体;1976年发射的kh-11卫星,可以分辨15 cm物体,发回彩色照片。

所以简单的gcj-02地图数据并不能满足我们高精度的送餐和导航数据,所以微信小程序后台有高精度的数据收费项目,或者简单使用蓝牙等其他定义技术。

现在,让我们假装成大师,画出我们自己的地图,可以像我们想要的那样精确。我们也可以在上面打上各种标记,比如poi(兴趣点,一个poi可以是房子,商店,邮箱,公交车站等。),控制点,指南针,路径等。

我们修改xml,添加地图标签,然后在地图下添加一个视图来解释标签在地图上的位置。

map class=" map-container " markers=" { { markers }} "经度=" { {经度} } "纬度=" { {纬度}}"/map

view class="marker-info "

查看* { {标记[0]。title}}/view

查看{ {标记[0]。地址} }/视图

/view

标记的用法可以在这里详细看到:

https://developers . weixin . qq.com/mini program/dev/component/map . html

onready:函数{

this.setdata({

纬度: 39.984060,

经度: 116.307520,

markers: [{

id: 100,

纬度: 39.984060,

经度: 116.307520,

标题: "中国科技交易大厦",

地址: "北京市海淀区北四环西路66号",

icon path : "/images/home _ press . png "

}]

});

},

比较后,我们给地图添加一个高度,400px,如下所示:

通常我们会在地图上放很多标记,超市、餐厅、酒店、加油站,主要看你的app会提供什么服务。比如航海,什么都会有。如果好玩,那就是公园和景点。这些数据需要由第三方公司提供。

让我们看看如果路径是规则的,如何引导用户。这需要折线属性,它是由许多点组成的折线,您可以设置它的颜色、样式和宽度。

map class="navi_map "经度="102.67484140406796 "纬度="25.03682953251695 "比例尺="100 "包含点="{{points}} "折线={ {折线}} "

/map

onready:函数{

var lat=25.03682953251695,lng=102.67484140406796

var points=[{

纬度25。56860 . 68868686861

经度36860 . 68868686861

},

{

纬度25度,25度。58860 . 88888888861

经度38860 . 88888686861

},

{

纬度25度,25度。58860 . 88888888861

经度38860 . 8888868861

},

{

纬度25。48860 . 88888888861

经度38860 . 88888686861

},

{

纬度25。56860 . 68868686861

经度36860 . 68868686861

},

]

var折线=[{

点数:点,

color: "#ff0000 ",

宽度: 2,

dottedline: true

}];

this.setdata({

经度: lng,

纬度:度,

polyline:折线,

点数:点

})

},

难点是如何得到这些点。我们需要用ps在地图上采样。

如果我们关注一个区域而不是一条路径,我们可以使用多边形。例如,自行车共享中的停车区域可以使用此属性。我们只需要改变折线的定义。

var多边形=[{//原来是折线

点数:点,

strokecolor: "#ff0000 "、

strokewidth: 2,

fillcolor: "#a9ea00 "

}];

this.setdata({

经度: lng,

纬度:度,

多边形:多边形,

点数:点

})

wxml只需更改:

map class="navi_map "经度="102.67484140406796 "纬度="25.03682953251695 "比例尺="100 "包含点="{{points}} "多边形={ { polygon } } "/map

除了这些会随着地图的拖动而移动的标记,还有一种叫做控件的标记,但是现在我们需要使用cover-view。它会在地图上画一个固定的区域,在上面放一个指南针,放大缩小,再返回上来。

让我们试着在地图上找一个搜索框。封面视图需要放在地图中,只有有限数量的标签可以放在封面视图中。当然可以放不支持的标签,但是会发出警告,不知道什么时候会完全不支持。

封面本身有很多坑:

1.cover-view不支持背景渐变颜色,其内部标签不能使用渐变颜色。解决方案:将背景颜色更改为单一颜色。

2.cover-view不支持在单一位置设置边框。例如,您希望添加一条顶部边框线来拆分标签。解决方案:用cover-view将其高度设置为1px,并模拟一条边界线。

3.cover-view不能覆盖textarea。解决方法:当textarea失去焦点时,用视图标记替换,然后单击时切换回textarea。

map class="navi_map "经度="102.67484140406796 "纬度="25.03682953251695 "比例尺="100 "包含点="{{points}} "多边形={ { polygon } } "

!搜索框实施

cover-view class=" cover-input " bind tap=" tapinput "

cover-view class=" text“{ inputinfo } }/cover-view

input class=" input " value=" { { input model } } " focus=" { { inputfocus } } " bind blur=" blurinput "/input

/cover-view

!搜索框实施

/map

数据: {

motto: "hello world ",

userinfo: {},

hasuserinfo: false,

address: ",

经度e: 0,//经度

纬度e: 0,//纬度

markers:

polypon:

inputfocus: false,

inputmodel:”,

inputinfo: "搜索",

canuses : wx .

猜你喜欢

  • 乌檀木菜板好不好

    乌檀木菜板好不好68人支持

    这方面我不是专业人士,我自己也没有仔细研究过。我在网上查了很多资料,大部分都是略接,没有详细介绍两者的区别。在这里我将整理总结一下我找了这么久的两个方面的知识,介绍给大…

  • 中国移动8元套餐介绍

    中国移动8元套餐介绍43人支持

    现在,全国都在传输端口号。不知道现在有多少人想转端口号。其实对于大家来说,转端口号的意愿可能没有以前那么强烈了。毕竟不管你怎么转端口号转,你都是在中国移动,中国联通,中国…

  • 数字化服务软通动力

    数字化服务软通动力49人支持

    在新经济时代,数字化为各个领域注入了新的动力。然而,在新动力的推动下,许多传统企业的后向动力将面临巨大威胁。7月4日至6日,来自isoftstone和各界的数字企业代表和行业专家齐…

  • 快速提升淘宝店铺流量的技能

    快速提升淘宝店铺流量的技能84人支持

    对于刚加入淘宝的新手商家来说,提高淘宝店铺的流量确实很重要,因为只有你的店铺有稳定的流量,店铺才能有很好的转型。今天小编将分享一些提高淘宝店铺流量的方法,希望对你有所帮…

  • 饥荒代码大全物品全开

    饥荒代码大全物品全开57人支持

    《饥荒》网游地图基本分为这些地形,包括平原、沼泽、草原、矿区、墓葬。地图是随机生成的,几个地形可能被挤压成一个大陆,也可能是一个单独的圆形岛屿。以下是6399游戏小编带给…

  • 蛤蜊和花甲的区别

    蛤蜊和花甲的区别38人支持

    严格来说,两者是有细微差别的。花蛤就是花甲,而花蛤(即花甲)是蛤蜊的其中一种种类。什么是蛤?在蛤蜊是双壳纲软体动物的统称,它也被称为蛤蜊,蛤蜊,西施舌,蛤蜊等。也就是说,蛤是各种…

  • 京东白条闪付怎么开通

    京东白条闪付怎么开通3人支持

    如今,互联网金融已经发展得非常成熟。有现金贷款和消费贷款。比如花白条的支付是消费型的,可以在平台消费,但不允许养。但是,只要能消耗掉,总会有人想办法把它弄出来的。今天给大…

  • 普通电视机顶盒多少钱

    普通电视机顶盒多少钱63人支持

    电视盒被公认为业界最理想的电视升级方案。但是对于很多用户来说,不愿意在旧电视上投入太多。所以100-200元的电视盒配置虽然不高,但是销量却极其火爆。在今天的文章中,作者为…

  • shopee入驻条件费用

    shopee入驻条件费用97人支持

    我19天卖了12单,卖了新台币6592元,折合人民币1515元,净赚20%左右。我没有开车,也没有下订单。说说我的看法。以下讨论以台湾省站为鸡翅(国内卖家默认站点)1.虾皮在台湾省的定位…

  • 技术牛市是什么意思?

    技术牛市是什么意思?55人支持

    对于刚进入股市的朋友来说,很多股票专用术语不是很清楚,也不知道是什么意思。比如很多朋友不知道技术牛市是什么意思。在这里,xi蔡骏将详细介绍技术牛市的内容。按照惯例,从底部…

  • 鞋子臭味怎么快速去除

    鞋子臭味怎么快速去除58人支持

    首先,无论男女,无论穿什么鞋,总会有一些异味,那么如何减少异味呢!还是让它消失?首先一定要确定味觉的根源来自于脚,跟脚有关,或者说袜子鞋子,个人卫生习惯。怎么减少臭味或者让臭味消…

  • 试客联盟靠谱吗?

    试客联盟靠谱吗?14人支持

    随着经济的开放和科技的进步,各种公司、行业和移动应用如雨后春笋般涌现,催生了一批奇怪的职业。羊毛党就是其中之一。现在羊毛党的规模还是很大的,月入几百到几万,几十万到几百…