ccren 2024-10-12 11:31 采纳率: 33.3%
浏览 1

请教两个关于高德地图定位不准的技术问题

img

1、圆圈圆心坐标和半径长度,圆圈包含不规则识别区域
2、问题一:无法获取当前位置是否进入圆圈内,期望在从接近圆圈边缘到进入圆圈不要因为定位不准而出现判定反复

uni.getLocation({
   type: 'gcj02', //返回可以用于uni.openLocation的经纬度
   isHighAccuracy: true,
   highAccuracyExpireTime: 3900,
   // 用户允许获取定位
   success: function (res) {
   if (res.errMsg == "getLocation:ok") {

3、问题二:识别定位设备是否进入电子围栏,期望在从接近电子围栏边缘到进入电子围栏不要因为定位不准而出现判定反复

  • 写回答

2条回答 默认 最新

  • 香格里辣 2024-10-12 11:32
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    首先,我尝试解析这两个问题和图的内容来帮助理解。根据您的描述和代码片段,我会给出一些可能的解决方案和建议。

    问题一:无法获取当前位置是否进入圆圈内

    对于这个问题,首先你需要知道你的设备的位置和圆的中心坐标以及半径长度。一旦你得到了这些信息,你可以使用数学计算来判断设备是否在圆圈内。在JavaScript中,你可以使用两点之间的距离公式来计算设备和圆心的距离,然后与半径进行比较。如果距离小于或等于半径,那么设备就在圆圈内。这是一个基本的示例代码:

    function isInsideCircle(position, center, radius) {
        var dx = position.longitude - center.longitude;
        var dy = position.latitude - center.latitude;
        return (dx * dx + dy * dy <= radius * radius);
    }
    

    问题二:识别定位设备是否进入电子围栏

    对于这个问题,你需要记录设备的定位历史结果,然后与电子围栏进行比较。电子围栏可以看作是一个或多个不规则的识别区域。当设备进入或离开这些区域时,你应该能够识别出来。对于这种情况,你可以创建一个复杂的函数来处理这些不规则的区域边界。如果你使用的地图库或API支持的话,你可能可以使用地图的地理围栏功能来实现这个功能。对于高德地图,你可以使用其地理围栏API来判断设备是否进入了特定的区域。同时,你提到的与电子围栏差值10米内判定为无效移动,这个可以作为判断设备是否真正进入或离开电子围栏的条件之一。此外,关于高德商业版和免费版的定位精度差异问题,你可以考虑根据实际需求选择合适的版本。商业版通常可以提供更高的定位精度和更多的功能。关于每5秒获取一次定位的需求,你需要确保你的定位服务设置可以满足这个频率要求。如果频率过高可能会影响性能和电池寿命,所以需要根据实际情况进行平衡和调整。关于你说的新的定位连续两次确认定位结果,每次确认定位结果变更耗时10秒,这部分的处理需要根据实际的业务需求和用户体验来决定处理方式。如果你的应用场景可以接受短时间内的延迟(如一个更稳定的位置而不是快速的抖动),这可能会有助于改进精度。希望以上信息能帮助你解决问题。如果你有其他关于代码实现的问题或需要进一步的帮助,请告诉我!

    评论

报告相同问题?

问题事件

  • 修改了问题 10月12日
  • 创建了问题 10月12日