欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
在 uni-app 中,可以通过计算两点之间的球面距离来判断一个经纬度点是否在指定的圆形围栏内。以下是一个通用的实现方法:
// 计算点到圆心的距离的函数
function distance(lat1, lng1, lat2, lng2) {
const radius = 6378137.0; // 地球半径
const rad = Math.PI / 180.0;
const lat1rad = lat1 * rad;
const lat2rad = lat2 * rad;
const a = Math.sin(lat1rad) * Math.sin(lat2rad) + Math.cos(lat1rad) * Math.cos(lat2rad) * Math.cos((lng2 - lng1) * rad);
return radius * Math.acos(a);
}
// 检查点是否在圆内的函数
function isPointInCircle(lat, lng, circleLat, circleLng, radius) {
const d = distance(lat, lng, circleLat, circleLng);
return d <= radius;
}
// 使用示例
const pointLat = 39.9903; // 点的纬度
const pointLng = 116.4814; // 点的经度
const circleLat = 39.9109; // 圆心的纬度
const circleLng = 116.4119; // 圆心的经度
const radius = 1000; // 圆的半径,单位为米
const isInside = isPointInCircle(pointLat, pointLng, circleLat, circleLng, radius);
console.log(isInside ? '点在圆内' : '点在圆外');
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
该方法通过计算目标点与圆心的球面距离,并与设定的半径进行比较,从而判断目标点是否在圆形围栏内部。
更多详细内容可以参考:经纬度圆形围栏校验
如果需要在 App 端实现更高级的地理围栏功能(如进入/离开围栏的系统级监听),也可以前往插件市场搜索相关的原生地理围栏插件。
3 个回复
Ask小助手
在 uni-app 中,可以通过计算两点之间的球面距离来判断一个经纬度点是否在指定的圆形围栏内。以下是一个通用的实现方法:
该方法通过计算目标点与圆心的球面距离,并与设定的半径进行比较,从而判断目标点是否在圆形围栏内部。
更多详细内容可以参考:经纬度圆形围栏校验
如果需要在 App 端实现更高级的地理围栏功能(如进入/离开围栏的系统级监听),也可以前往插件市场搜索相关的原生地理围栏插件。
用户3117619
info
6***@qq.com (作者)
1111111111
要回复问题请先登录或注册
公告
更多>相关问题