首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何检查当前经度/经度是否在给定经度/经度20公里内

要检查当前经度/纬度是否在给定经度/纬度20公里内,可以使用以下步骤:

  1. 获取当前位置的经度和纬度信息。可以使用HTML5的Geolocation API获取用户的当前位置信息,或者通过其他方式获取设备的位置信息。
  2. 计算当前位置与给定位置之间的距离。可以使用Haversine公式或Vincenty公式等算法来计算两个经纬度之间的距离。这些算法考虑了地球的曲率和椭球形状,可以提供较为准确的距离计算结果。
  3. 判断距离是否小于等于20公里。将计算得到的距离与20公里进行比较,如果小于等于20公里,则当前位置在给定位置的20公里范围内;如果大于20公里,则当前位置不在给定位置的20公里范围内。

以下是一个示例代码,使用JavaScript语言实现了上述步骤:

代码语言:txt
复制
function calculateDistance(lat1, lon1, lat2, lon2) {
  const R = 6371; // 地球半径,单位为千米
  const dLat = (lat2 - lat1) * Math.PI / 180;
  const dLon = (lon2 - lon1) * Math.PI / 180;
  const a =
    Math.sin(dLat / 2) * Math.sin(dLat / 2) +
    Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
    Math.sin(dLon / 2) * Math.sin(dLon / 2);
  const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  const distance = R * c; // 距离,单位为千米
  return distance;
}

function checkWithinRange(currentLat, currentLon, targetLat, targetLon) {
  const distance = calculateDistance(currentLat, currentLon, targetLat, targetLon);
  return distance <= 20;
}

// 示例使用
const currentLat = 39.9087; // 当前位置的纬度
const currentLon = 116.3975; // 当前位置的经度
const targetLat = 39.9075; // 给定位置的纬度
const targetLon = 116.3970; // 给定位置的经度

const isWithinRange = checkWithinRange(currentLat, currentLon, targetLat, targetLon);
console.log(`当前位置是否在给定位置的20公里范围内:${isWithinRange}`);

请注意,以上示例代码仅为演示目的,实际应用中可能需要考虑更多的因素,如误差范围、坐标系转换等。具体实现方式可能因开发环境和需求而异。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,无法提供相关链接。但腾讯云提供了丰富的云计算服务,可以通过访问腾讯云官方网站或搜索引擎获取相关信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

redis常用命令和数据类型

基础知识:redis默认有16个库,下标从0开始 1、切换数据库命令(切换到1号库:select 目标库下标) 2、查看当前数据库大小,也就是key的数量(dbsize) 3、查看当前数据库所有的键...单位可以是:m、km、mi(英里)、ft(英尺) geodist key 地名1 地名2 单位 4、georadius:根据用户给定的经纬度坐标来获取指定范围的地理位置集合。...georadius 以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素 georadius key 经度 纬度 半径值 单位 [WITHCOORD] [WITHDIST...georadiusbymember 和 GEORADIUS 命令一样, 都可以找出位于指定范围的元素, 但是 georadiusbymember 的中心点是由给定的位置元素决定的, 而不是使用经度和纬度来决定中心点...二、Bitmaps 用来统计用户是否访问过网站,访问为1,没有为0 详解redis的bitmap亿级项目中的应用 设置值setbit:设置Bitmaps中某个偏移量的值(0或1),offset从0

89810
  • Redis 实战篇:Geo 算法教你邂逅附近女神

    经度的范围在 (-180, 180],纬度的范围 (-90, 90],纬度正负以赤道为界,北正南负,经度正负以本初子午线 (英国格林尼治天文台) 为界,东正西负。...” 以用户为中心,给定一个 1000 米作为半径画圆,那么圆形区域的用户就是我们想要邂逅的「附近的人」。...” 我们可以通过区域来过滤出有限「女神」坐标数据,再对矩形区域的数据进行全量距离计算再排序,这样计算量明显降低。 “如何划分矩形区域呢?.../** * 获取附近 x 米的人 * * @param distance 搜索距离范围 单位km * @param userLng 当前用户的经度 * @param userLat 当前用户的纬度...Sorted Set 初见端倪 “Sorted Set 类型是是否合适呢?因为它可以排序。

    1.6K10

    Redis 实战篇:通过 Geo 类型实现附近的人邂逅女神

    经度的范围在 (-180, 180],纬度的范围 (-90, 90],纬度正负以赤道为界,北正南负,经度正负以本初子午线 (英国格林尼治天文台) 为界,东正西负。...” 以用户为中心,给定一个 1000 米作为半径画圆,那么圆形区域的用户就是我们想要邂逅的「附近的人」。 将经纬度存储到 MySQL: ?...” 我们可以通过区域来过滤出有限「女神」坐标数据,再对矩形区域的数据进行全量距离计算再排序,这样计算量明显降低。 “如何划分矩形区域呢?.../** * 获取附近 x 米的人 * * @param distance 搜索距离范围 单位km * @param userLng 当前用户的经度 * @param userLat 当前用户的纬度...Sorted Set 初见端倪 “Sorted Set 类型是是否合适呢?因为它可以排序。

    1.3K20

    Redis 实战篇:通过 Geo 类型实现附近的人邂逅女神

    经度的范围在 (-180, 180],纬度的范围 (-90, 90],纬度正负以赤道为界,北正南负,经度正负以本初子午线 (英国格林尼治天文台) 为界,东正西负。...” 以用户为中心,给定一个 1000 米作为半径画圆,那么圆形区域的用户就是我们想要邂逅的「附近的人」。...” 我们可以通过区域来过滤出有限「女神」坐标数据,再对矩形区域的数据进行全量距离计算再排序,这样计算量明显降低。 “如何划分矩形区域呢?.../** * 获取附近 x 米的人 * * @param distance 搜索距离范围 单位km * @param userLng 当前用户的经度 * @param userLat 当前用户的纬度...Sorted Set 初见端倪 “Sorted Set 类型是是否合适呢?因为它可以排序。

    1.1K50

    Redis之GEO类型解读

    geopos 从key里返回所有给定位置元素的位置(经度和纬度) geodist 返回两个给定位置之间的距离 georadius 以给定的经纬度为中心, 找出某一半径的元素 georadiusbymember...找出位于指定范围的元素,中心点是由给定的位置元素决定 geohash 返回一个或多个位置元素的 Geohash 表示 geoadd 命令  将指定的地理空间位置(纬度、经度、名称)添加到指定的key...geopos 命令 从key里返回所有给定位置元素的位置(经度和纬度)。...在给定以下可选项时, 命令会返回额外的信息: WITHDIST: 返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。...georadiusbymember 命令 这个命令和 GEORADIUS 命令一样, 都可以找出位于指定范围的元素, 但是 GEORADIUSBYMEMBER 的中心点是由给定的位置元素决定的, 而不是像

    27740

    Redis之GEO类型解读

    geopos 从key里返回所有给定位置元素的位置(经度和纬度) geodist 返回两个给定位置之间的距离 georadius 以给定的经纬度为中心, 找出某一半径的元素 georadiusbymember...找出位于指定范围的元素,中心点是由给定的位置元素决定 geohash 返回一个或多个位置元素的 Geohash 表示 geoadd 命令 将指定的地理空间位置(纬度、经度、名称)添加到指定的key...geopos 命令 从key里返回所有给定位置元素的位置(经度和纬度)。...在给定以下可选项时, 命令会返回额外的信息: WITHDIST: 返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。...georadiusbymember 命令 这个命令和 GEORADIUS 命令一样, 都可以找出位于指定范围的元素, 但是 GEORADIUSBYMEMBER 的中心点是由给定的位置元素决定的, 而不是像

    457110

    利用Redis的Geo功能实现查找附近的位

    前言 老板突然要上线一个需求,获取当前位置方圆一公里的业务代理点。明天上线!当接到这个需求的时候我差点吐血,这时间也太紧张了。赶紧去查相关的技术选型。经过一番折腾,终于晚上十点完成了这个需求。...GEORADIUS 以给定的经纬度为中心, 找出某一半径的元素 GEOADD 将指定的地理空间位置(纬度、经度、名称)添加到指定的 key 中 GEORADIUSBYMEMBER 找出位于指定范围的元素...,中心点是由给定的位置元素决定 Redis 会假设地球为完美的球形, 所以可能有一些位置计算偏差,据说<=0.5%,对于有严格地理位置要求的需求来说要经过一些场景测试来检验是否能够满足需求。...2.1 写入地理信息 那么如何实现目标单位半径的所有元素呢?我们可以将所有的位置的经纬度通过上表中的GEOADD将这些地理信息转换为 52 位的Geohash写入Redis。...2.2 统计单位半径的地区 我们可以借助于GEORADIUS来找出以给定经纬度,某一半径的所有元素。

    1.4K30

    利用Redis的Geo功能实现查找附近的位置

    前言 老板突然要上线一个需求,获取当前位置方圆一公里的业务代理点。明天上线!当接到这个需求的时候我差点吐血,这时间也太紧张了。赶紧去查相关的技术选型。经过一番折腾,终于晚上十点完成了这个需求。...GEORADIUS 以给定的经纬度为中心, 找出某一半径的元素 GEOADD 将指定的地理空间位置(纬度、经度、名称)添加到指定的 key 中 GEORADIUSBYMEMBER 找出位于指定范围的元素...,中心点是由给定的位置元素决定 Redis 会假设地球为完美的球形, 所以可能有一些位置计算偏差,据说<=0.5%,对于有严格地理位置要求的需求来说要经过一些场景测试来检验是否能够满足需求。...2.1 写入地理信息 那么如何实现目标单位半径的所有元素呢?我们可以将所有的位置的经纬度通过上表中的GEOADD将这些地理信息转换为 52 位的Geohash写入Redis。...2.2 统计单位半径的地区 我们可以借助于GEORADIUS来找出以给定经纬度,某一半径的所有元素。

    2.4K50

    redis | 九、redis之Geospatial

    但是,最坏的情况下的偏差可能是0.5%,所以一些地理位置很关键的应用还是需要谨慎考虑。 2. 它是如何工作的? sorted set使用一种称为Geohash的技术进行填充。...这种格式允许半径查询检查的1 + 8个领域需要覆盖整个半径,并丢弃元素以外的半径。...返回值 GEOPOS 命令返回一个数组, 数组中的每个项都由两个元素组成:第一个元素为给定位置元素的经度, 而第二个元素则为给定位置元素的纬度。 当给定的位置元素不存在时, 对应的数组项为空值。...(经度和纬度) Redis GEODIST 命令 返回两个给定位置之间的距离 Redis GEORADIUS 命令 以给定的经纬度为中心, 找出某一半径的元素 Redis GEOADD 命令 将指定的地理空间位置...(纬度、经度、名称)添加到指定的key中 Redis GEORADIUSBYMEMBER 命令 找出位于指定范围的元素,中心点是由给定的位置元素决定

    65720

    Redis GEO地理位置

    根据给定地理位置获取指定范围的地理位置集合; GEOHASH 获取某个地理位置的geohash值。...将给定的空间元素(纬度、经度、名字)添加到指定的键里面。...从键里面返回所有给定位置元素的位置(经度和纬度)。 GEOPOS 命令返回一个数组, 数组中的每个项都由两个元素组成: 第一个元素为给定位置元素的经度, 而第二个元素则为给定位置元素的纬度。...在给定以下可选项时, 命令会返回额外的信息: WITHDIST : 返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。..., 但是 GEORADIUSBYMEMBER 的中心点是由给定的位置元素决定的, 而不是像 GEORADIUS 那样, 使用输入的经度和纬度来决定中心点。

    1.7K40

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

    经度的范围在 (-180, 180],纬度的范围 (-90, 90],纬度正负以赤道为界,北正南负,经度正负以本初子午线 (英国格林尼治天文台) 为界,东正西负。...可我当前的点与邻近的点很近,但恰好我们分别在两个区域,明明就在眼前的点偏偏搜不到,实实在在的灯下黑。 **如何解决这一问题?...GEOADD:将给定的位置对象(纬度、经度、名字)添加到指定的key; GEOPOS:从key里面返回所有给定位置对象的位置(经度和纬度); GEODIST:返回两个给定位置之间的距离; GEOHASH...WITHDIST:返回位置对象的同时,将位置对象与中心之间的距离也一并返回。距离的单位和用户给定的范围单位保持一致。 WITHCOORD:将位置对象的经度和维度也一并返回。...db.coll.createIndex({'location':"2d"}, {"bits":11111}) 用geoNear命令测试一下, near 当前坐标(经、纬度),spherical 是否计算球面距离

    1.5K30

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

    经度的范围在 (-180, 180],纬度的范围 (-90, 90],纬度正负以赤道为界,北正南负,经度正负以本初子午线 (英国格林尼治天文台) 为界,东正西负。...可我当前的点与邻近的点很近,但恰好我们分别在两个区域,明明就在眼前的点偏偏搜不到,实实在在的灯下黑。 如何解决这一问题?...GEOADD:将给定的位置对象(纬度、经度、名字)添加到指定的key; GEOPOS:从key里面返回所有给定位置对象的位置(经度和纬度); GEODIST:返回两个给定位置之间的距离; GEOHASH...WITHDIST:返回位置对象的同时,将位置对象与中心之间的距离也一并返回。距离的单位和用户给定的范围单位保持一致。 WITHCOORD:将位置对象的经度和维度也一并返回。...db.coll.createIndex({'location':"2d"}, {"bits":11111}) 用geoNear命令测试一下, near 当前坐标(经、纬度),spherical 是否计算球面距离

    2.1K20

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

    ⑦Redis GEO 基本操作命令 Redis GEO主要用于存储地理位置信息,并对存储的选项进行操作: 1.添加地理位置的坐标 2.获取地理位置的坐标 3.计算两个地理位置间的距离 4.根据用户给定的经纬度坐标来获取指定范围的地理位置集合...latitude :维度 radius : 最大距离 WITHDIST :返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。...距离的单位和用户给定的范围单位保持一致。 WITHCOORD : 将位置元素的经度和维度也一并返回。...2000 km withcoord withdist count 2 6.georadiusbymember 获取key中指定范围的所有位置元素(给定位置元素) 找出位域指定范围的元素,中心点是由给定的位置元素决定的...距离的单位和用户给定的范围单位保持一致。 WITHCOORD : 将位置元素的经度和维度也一并返回。

    32410

    Basemap工具函数(3)

    rotate_vector 给定向量场的 东西 和 南北 方向分量以及经纬度点,然后对向量进行旋转,使向量场地图投影上以适当的方向显示。...因此很难使用例子展示其是如何起作用的。...shiftdata 添加经度值从而正确适应地图。改变数据数组也能适应新的地图。有时候,精度数据给定的间隔范围是从 -180 到 180,或是从 0 到 360。要正确绘图,数据必须要进行转换。...注意:蓝色(值为0)区域起始点不是经度=0 ? 未使用此方法的结果。注意结果和预期不同,因为经度正确区间外 shiftgrid 此函数和 shiftdata 方法类似。...如果 lon0是经度的初始点或是输出数组的最后一个点,要设置 start cyclic 设置经度值,经度[0 lon0]区间 函数返回被排序后的数据和转换后的经度 注意: 和 shiftdata 的主要差异是

    1.1K30

    交友系统设计:哪种地理空间邻近算法更快?

    系统就通知他们配对成功,并为他们开启聊天功能,可以更进一步了解对方,决定是否建立更深入的关系。...1、SQL 邻近算法 我们可以将用户经、纬度直接记录到数据库中,纬度记录在 latitude 字段,经度记录在longitude 字段,用户当前的纬度和经度为 X,Y,如果我们想要查找和当前用户经、纬度距离...当给定当前用户的经、纬度,查询邻近用户的时候,首先从根节点开始查找,如果根节点就是叶子节点,那么直接遍历根节点中的所有用户,计算距离即可。...如果子树是叶子节点,那么叶子节点中查找,如果不是叶子节点,继续上面的过程,直到叶子节点。 上面的过程只能找到当前用户所在网格的好友,如何查找邻近网格的其他用户呢?...继续求取当前区间的平均值,进一步将当前区间分为两个区间。如此不断重复,可以经度和纬度方向上,得到两个二进制数。这个二进制数越长,其所在的区间越小,精度越高。

    22210

    Redis实现附近的人

    当用户点击 Near Me 功能时,那么通过后台就可以以当前用户的位置为圆点,距离为半径查询相关的用户展示即可完成 注意 redis 的经纬度有 0.5%的误差,所以精度要求高的比如地图就慎用 redis...GEOPOS 从key里返回所有给定位置元素的位置(经度和纬度)。...范围可以使用以下其中一个单位: m 表示单位为米 km 表示单位为千米 mi 表示单位为英里 ft 表示单位为英尺 在给定以下可选项时, 命令会返回额外的信息: WITHDIST: 返回位置元素的同时...距离的单位和用户给定的范围单位保持一致 WITHCOORD: 将位置元素的经度和维度也一并返回 WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值...这种格式允许半径查询检查的 1 + 8 个领域需要覆盖整个半径,并丢弃元素以外的半径。

    73120

    Redis的3个高级数据结构

    例如给定范围bit统计(例如人口统计)。 Bitmaps的最大优点就是存储信息时可以节省大量的空间。例如在一个系统中,不同的用户被一个增长的用户ID表示。...如果bit地址超过当前string长度,会自动增大string。 ? GETBIT命令指示返回指定位置bit的值。超过范围(寻址地址目标key的string长度以外的位)的GETBIT总是返回0。...GEO Redis的GEO特性 Redis3.2版本中推出,这个功能可以将用户给定的地理位置(经度和纬度)信息储存起来,并对这些信息进行操作。...GEOPOS:GEOPOS key member [member …],从key里返回所有给定位置元素的位置(经度和纬度)。...,但是GEORADIUSBYMEMBER的中心点是由给定的位置元素决定的,而不是像 GEORADIUS那样,使用输入的经度和纬度来决定中心点。

    2.2K10

    Redis三种特殊类型

    Redis三种特殊数据类型 geospatial 地理位置 朋友的定位, 附近的人, 打车的距离计算 Redis的GeoRedis3.2版本就推出了.这个功能可以推算地理位置信息, 两地之间的距离...)通过半径来查询 以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。范围可以使用以下其中一个单位: m 表示单位为米。 km 表示单位为千米。...才会让结果更加的准确 127.0.0.1:6379> georadius china:city 110 30 1500 km # 获取 110 30 这个经纬度为中心 寻找方圆1000km 的城市...基数和等势的概念在有限集范畴比较直观,但是如果扩展到无限集则会比较复杂,一个无限集可能会与其真子集等势(例如整数集和偶数集是等势的)。...6379> setbit sign 5 1 (integer) 0 127.0.0.1:6379> setbit sign 6 0 (integer) 0 127.0.0.1:6379> 查看某一天是否打卡

    62420

    你真的分得清“前后左右”和“东西南北”吗?(二)——经纬度的秘密

    大于0度的范围,绝对值增大表示正方向,小于0度的范围,绝对值增大其实是数值减小,也就是负方向。...以此相对地球球心的经度方位定义好以后,两个地球上的点的相对经度方向也可以推导出来了。这一点理解了的的话,就再也不要去背那些如何根据两个经纬度去算谁在谁的东边还是西边多少度的公式了。...给定两个点的经度A, B,把西经用加负号替代,则A一定比B大A - B,即A一定在B的东边A - B度。...这样的好处是,无论是描述一个点的绝对位置还是两个点的相对位置,可以用小范围[0, pi]的绝对值来表达,同时是否为负,也就是是否是西侧,决定其到底是西还是东的基本属性,也表明了达到终点最近的路到底该朝哪边走...要用全部不是不行,那经度就得只用一半而已,否则存在一个位置两个描述的非一一映射情况了,这个事已经因为经度比维度的定义先来后到给定下来了,也符合一般的球坐标系的约定。

    1K20
    领券