首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    是什么能让 APP 快速精准定位到我们的位置?

    地球铺平面图 以赤道和本初子午线为界,将地球分为经度和纬度。赤道是在0度,本初子午线也在0度。以赤道作为经度X横坐标,以本初子午线作为纬度 Y 竖坐标。...经纬度图 经度(longitude)`和`纬度(latitude)`简称 `lng` 和 `lat 其中,从本初子午线向东划分180度称为东经,用”E”表示:(0, 180];向西划分180度为西经,...指定一个位置的经纬度坐标值。 根据十字坐标图和二分法,将纬度和经度划分成1和0的二进制数字串。 按照“偶数位放经度,奇数位放纬度”算法,合并经度和纬度这2个二进制数字串。...//$precision 精度最大是12,代表12个字符,1个字符由5个二进制组成,也就是 12 * 5 = 60 //精度和纬度对半开,得除以2,也就是最大长度为30个二进制。...那我们还是用腾讯大厦的geohash值,分别截取经度为前7,6,5位看看,在地图上是怎么样的: 精度为7,153m范围内 精度为6,1.22km范围内 精度为5, 4.89km范围内 所以,根据上面的图

    2.3K30

    揭秘!是什么能让APP快速精准定位?

    geohash通过算法将1个定位的经度和纬度2个数值,转换成1个hash字符串。如果2个地方距离越近,那么他们的hash值的前缀越相同。...我们将地球铺平开来,会得到下面这个平面图: 以赤道和本初子午线为界,将地球分为经度和纬度。赤道是在0度,本初子午线也在0度。...以赤道作为经度X横坐标,以本初子午线作为纬度Y竖坐标: 经度(longitude)和纬度(latitude)简称lng和lat。...指定一个位置的经纬度坐标值。 根据十字坐标图和二分法,将纬度和经度划分成1和0的二进制数字串。 按照“偶数位放经度,奇数位放纬度”算法,合并经度和纬度这2个二进制数字串。...= 0;$latList = $lngList = []; //$precision 精度最大是12,代表12个字符,1个字符由5个二进制组成,也就是 12 * 5 = 60//精度和纬度对半开,得除以

    2.1K20

    空间索引-geohash算法实现

    算法简介 geohash是实现空间索引的一种算法,其他实现空间索引的算法有:R树和其变种GIST树、四叉树、网格索引等 算法基本原理 geohash算法将地球理解为一个二维平面,将平面递归分解成更小的子块...: /**  * @param float $num经度或纬度  * @param string $str递归字符串  * @param int $i 递归次数  * @param int $max_separate_num...$limit_1:$limit_0);     } } 由此,纬度24.88849可得字符串为10100011011001011001 经度118.6197800000,经度分为东经和西经,区间为[-...180,180],由此可得字符串11010100010110100001 组合2个字符串,偶数放经度位,奇数放纬度位,php代码实现 /**  * @param $latitude_str 纬度  *...for ($i = 0; $i 精度表,可发现纬度>=经度         $str .= $longitude_str{$i}

    2.1K20

    GeoHash: 二维空间的一维表示

    二. geohash算法 geohash算法便是基于上面空间网格化的思想,对经纬度分别进行网格化的分层处理,最后再组合一起. 1. 经纬度的分层. 以北京的经纬度116.46和39.92为例....首先将经度也按一分为二的方式不断迭代划分下去, 按如下图可知,经度116.46可使用字符串[11010 01011]表示 将纬度也按一分为二的方式不断迭代划分下去....经纬度的合并计算 通过上面表格,已经知道北京的经纬度116.46和39.92 分别对应的[11010 01011]和[10111 00011]....从0开始,奇数位放纬度,偶数位放经度,合并后并转为base32字符串 [11100 11101 00100 01111] 根据base32算法,地理位置字符串为wx4g 通过geohash官网验证,请求格式...可以用一个字符串表示经度和纬度两个坐标 2.

    84220

    Redis Geo:掌握地理空间数据的艺术

    地理坐标系统 经纬度: 地理坐标系统使用经度和纬度来确定地球表面上的位置。经度表示东西位置,纬度表示南北位置。...表示方法: 在Redis Geo中,位置通常表示为一对浮点数:纬度(latitude)和经度(longitude)。例如,经度37.618423,纬度-122.375065表示旧金山国际机场。...精度和限制: 尽管经纬度可以非常精确,但在实际使用中,你可能需要根据具体应用场景来决定精度。同时,由于使用Geohash,极端情况下(如两个地点非常接近)可能会存在一定的误差。...二分编码 经度和纬度交替:Geohash算法会交替对经度和纬度进行二分。首先,将全球经度范围分为两部分(东半球和西半球),然后是纬度范围(北半球和南半球),接着再次对经度进行二分,如此交替进行。...用途:将给定的地理空间位置(经度、纬度和名称)添加到指定的key中。

    63210

    微信小程序地图与位置相关操作

    表示当前地图中心的经度和纬度,和当前用户所在位置的经度和纬度是不同概念,无直接关系。...(Object object) 获取当前地图的缩放级别 需要说明的是MapContext.getRegion()接口获取图片的范围,即是经度和纬度的取值范围,取值范围是以地图的西南和东北两个顶点的经度和纬度来限定的...MapContext.translateMarker()和MapContext.includePoints()两个接口中需要用到的经度和纬度不能超出MapContext.getRegion()接口的经度和纬度取值范围...,再用wx.openLocation()接口使用wx.getLocation()接口获取的经度和纬度打开位置地图。...complete: function() { // complete } }) } })   本例先用wx.getLocation()接口获取经度和纬度

    3.8K20

    Redis GeoHash核心原理解析

    但是对于空间上的一个点(二维,包括经度和纬度),如何排序呢?又如何索引呢?解决的方法很多,下文介绍一种方法来解决这一问题。...为什么分别给经度和维度编码?为什么需要将经纬度两串编码交叉组合成一串编码?本节试图回答这一问题。...GeoHash值可以区分精度,位数越多,精度越高,表达的地理位置越精细;如一位的GeoHash值把地球划分为32个矩形,8位的geohash值把地球划分为32^8个小矩形 适合根据某个经纬度坐标position...每个POI都有经纬度信息,用图1b的SQL语句在mySQL中建立了POI_spatial的表,其中lat和lng两个字段来代表纬度和经度。为后续分析方便起见,我人造了40万个POI数据。...根据这个思路我们执行SQl查询(图5)(注:经度或纬度每隔0.001度,距离相差约100米,由此推算出矩形左下角和右上角坐标),发现过滤后正好剩下两个POI。

    2.1K20

    ⑦【Redis GEO 】Redis常用数据类型:GEO

    latitude —— 维度 member —— 位置名称 geoadd city 121.48941 31.40527 "广州" 2.geopos 返回指定位置名称的经度和纬度 geopos用于从指定...key中返回所有指定位置名称的经度和纬度,不存在返回nil geopos key member [member ...] geopos city 广州 # 获取空间名称“广州”的经纬度 geopos...距离的单位和用户给定的范围单位保持一致。 WITHCOORD : 将位置元素的经度和维度也一并返回。...# 键:city # 经度和纬度:121.48941010236740112 31.40526993848380499 # 以经纬度为中心,向外扩张的最大距离:2000 # 单位:km # withcoord...距离的单位和用户给定的范围单位保持一致。 WITHCOORD : 将位置元素的经度和维度也一并返回。

    87410

    geohash之2d 地理空间索引

    存储位置数据 要使用2d地理空间索引,您必须在预定的二维坐标系(例如经度和纬度)上对位置数据建模。您将文档的位置数据存储为字段中的两个坐标,该字段包含二维数组或具有两个字段的嵌入式文档。...如果您将纬度和经度用作坐标系,请始终先存储经度。MongoDB的二维球形指数运算符只能识别[ 经度, 纬度 ]排序。 创建地理空间索引 重要 MongoDB只支持每个集合一个地理空间索引。...2d索引的默认范围为经度和纬度,并使用边界值-180(含180)和180(不含)。 重要 2d索引的默认边界允许应用程序插入无效纬度大于90或小于-90的文档。...默认情况下,2d地理空间索引假设经度和纬度的边界为-180(含180 度), 即180度(即[-180,180 ))。MongoDB返回一个错误,并拒绝指定范围之外的坐标数据的文档。...干草堆索引中的每个桶都包含指定接近给定经度和纬度的所有文档。使用 bucketSize的参数ensureIndex)(确定接近。

    3.1K40

    地理编码-逆地理编码-经纬度解析-逆经纬度解析API接口的运用

    ,纬度 "level": "兴趣点",//匹配级别 } ] }逆地理编码请求参数名称类型必须说明locationString是传入内容规则:经度在前,纬度在后,经纬度间以..."distance": "",//交叉路口到请求坐标的距离 米 "direction": "",//方位 "location": "",//路口经纬度 经度,...可以输入两种样式的值,分别是:1、标准的结构化地址信息,北京市海淀区上地十街十号【推荐,地址结构越完整,解析精度越高】2、支持“路与路交叉口”描述方式,如北一环路和阜阳路的交叉路口第二种方式并不总是有返回结果...}}逆地理编码输入参数名称类型必须说明locationString是根据经纬度坐标获取地址,格式:纬度,经度。例如:120.067824,31.413068。...如无,该字段为空),包含子字段和pois基础召回字段相同。

    43510

    Geohash算法原理及实现

    ; 经纬线和米的换算:经度或者纬度0.00001度,约等于1米,这个在GPS测算距离的时候可以体会到,GPS只要精确到小数点后五位,就是10米范围内的精度 经度0度的位置为本初子午线,在180度的位置转为西经...他能够把二维的空间经纬度数据编码成一个字符串 我们知道,经度范围是东经180到西经180,纬度范围是南纬90到北纬90,我们设定西经为负,南纬为负,所以地球上的经度范围就是[-180, 180],纬度范围就是...经度占偶数位,纬度占奇数位,注意,0也是偶数位。...GeoHash用一个字符串表示经度和纬度两个坐标。...比如说左边区域的经度肯定是自身经度减去最小经度单位。纬度也可以通过加减,得到上下的纬度值,最终周围8个单位也可以计算得到。

    2.7K20

    美团如何查询附近商家

    纬度值(90-Latitude),南纬取90+纬度值(90+Latitude),则经过上述处理过后的两点被计为(MLonA, MLatA)和(MLonB, MLatB)。...此时上海的经度编码就是1。 我们再切割一次,将精度切成[-180°,-90°),[-90°,0°),[0°,90°),[90°,180°],按照二进制编码,分别为:00,01,10,11 ?...上海的纬度编码就是:10110001 最终我们得到的上海经纬度编码为 (121.43333,34.50000)-->(11010110,10110001) 统一编码 为了方便记录,我们把经度和维度的二进制格子编码进行合并...,按经度、纬度、经度、维度……这样的顺序,一位一位的进行放置: (11010110,10110001)-->1110011100101001 奇数位的红色是经度编码,偶数位的黑色是纬度编码 我们可以用16...2.GeoHash用一个字符串表示经度和纬度两个坐标。

    6K20

    第七章 LBS及GEO介绍

    :经度与纬度的合称组成一个坐标系统。...在一定误差范围内,通常情况下,经纬线和米的换算为:经度或者纬度0.00001度,约等于1米。...0,否则编码为1,然后根据目标纬度所落的区间再平均分成两个区间进行编码,以此类推,直到精度满足要求,经度也用同样的算法,对(-180, 180)依次细分,然后合并经度和纬度的编码,奇数位放纬度,偶数位放经度...,组成一串新的二进制编码,按照Base32进行编码目前Geohash使用的精度说明如下:GeoHash用一个字符串表示经度和纬度两个坐标, 比直接用经纬度的高效很多,而且使用者可以发布地址编码,既能表明自己位于某位置附近...不同的编码长度,生成的网格与实际地理的精度如下(Geohash字符串编码长度对应网格大小)邻近网格位置根据Geohash的编码规则将经纬度分解到二进制,结合地理常识,中心网格在南北(上下)方向上体现为纬度的变化

    50600

    一口气说出 4种 LBS “附近的人” 实现方式,面试官笑了

    经度的范围在 (-180, 180],纬度的范围 在(-90, 90],纬度正负以赤道为界,北正南负,经度正负以本初子午线 (英国格林尼治天文台) 为界,东正西负。...(几位的字符串) \* @param userLng 当前用户的经度 \* @param userLat 当前用户的纬度 \* @return json...1 \* @param latitude 纬度1 \* @param userLng 经度2 \* @param userLat 纬度2 \*...GEOADD:将给定的位置对象(纬度、经度、名字)添加到指定的key; GEOPOS:从key里面返回所有给定位置对象的位置(经度和纬度); GEODIST:返回两个给定位置之间的距离; GEOHASH...距离的单位和用户给定的范围单位保持一致。 WITHCOORD:将位置对象的经度和维度也一并返回。

    1.9K30

    Geohash原理

    合并:偶数位放经度,奇数位放纬度,把2串编码组合生成新串如下图 g....Geohash的0、1串序列是经度0、1序列和纬度0、1序列中的数字交替进行排列的,偶数位对应的序列为经度序列,奇数位对应的序列为纬度序列,在进行第一次划分时,Geohash0、1序列中的前5个bits...(11100),那么这5bits中有3bits是表示经度,2bits表示纬度,所以第一次划分时,是将经度划分成8个区段(2^3 = 8),将纬度划分为4个区段(2^2 = 4),这样就形成了32个区域。...为什么分别给经度和维度编码?为什么需要将经纬度两串编码交叉组合成一串编码?本节试图回答这一问题。...GeoHash Base32编码长度与精度。可以看出,当geohash base32编码长度为8时,精度在19米左右,而当编码长度为9时,精度在2米左右,编码长度需要根据数据情况进行选择。 7.

    6.9K40

    一口气说出 4种 “附近的人” 实现方式,面试官笑了!

    经度的范围在 (-180, 180],纬度的范围 在(-90, 90],纬度正负以赤道为界,北正南负,经度正负以本初子午线 (英国格林尼治天文台) 为界,东正西负。...注意:在计算geohash字符串时,需要指定geohash字符串的精度,也就是geohash字符串的长度,参考上边的geohash精度表。...1 * @param latitude 纬度1 * @param userLng 经度2 * @param userLat 纬度2 * @return...GEOADD:将给定的位置对象(纬度、经度、名字)添加到指定的key; GEOPOS:从key里面返回所有给定位置对象的位置(经度和纬度); GEODIST:返回两个给定位置之间的距离; GEOHASH...距离的单位和用户给定的范围单位保持一致。 WITHCOORD:将位置对象的经度和维度也一并返回。

    2.7K20

    空间索引 - GeoHash算法及其实现优化

    0,经度范围在 [90,180) 的标识为 1; 这样,我们划分 20 次,方格的精度(见文末对照表)已达到 2m,得到经度的标识二进制串为11010010101011110111; 对纬度同样划分,...仔细观察相邻方格,我们会发现两个小方格会在 经度或纬度的二进制码上相差1;我们通过 GeoHash 码反向解析出二进制码后,将其经度或纬度(或两者)的二进制码加一,再次组合为 GeoHash 码。...方案 于是我们接着寻找解决方案,既然使用 base32 转换为 32进制码 会不好控制精度,保持二进制又导致索引长度过长,那么进制位数和索引长度有没有一个平衡呢?...set; // GeoHash核心方法 传入float类型的度数和其对应的范围,经度和纬度公用方法 public function getBits($loc, $range, $level = self...我们在划分地图时,每多划分一次,会添加经度和纬度两个二进制位,在精度最高时,那么每一个方格的最大值和最小值之间差1。由此,我们通过下面的方法获取到一个方格的最大和最小 score 值之差。

    2.4K90
    领券