traccar6.11.1无坐标情况下有BUG

家用宽带架设服务器的技术交流,编程技术交流。
回复
psrmszh
帖子: 2
注册时间: 周四 12月 25, 2025 3:39 pm

traccar6.11.1无坐标情况下有BUG

帖子 psrmszh »

你好,我用大神你发布的windows版本搭建的平台,其中有一台设备在地下车库或无法获取GPS的情况下,但是火星坐标维度显示为0,经度是最后一次有限坐标。这种情况如何修复。已经使用了下面2个参数。在6.6版本时这样使用是正常的,最新的6.11版本出现了这个问题。
<!-- 启用过滤 -->
<entry key="filter.enable">true</entry>
<!-- 屏蔽0坐标 -->
<entry key='filter.zero'>true</entry>

图片
图片

日志记录能搜到如下记录
, time: 2025-12-25 07:34:12, lat: 0.00000, lon: 117.86006, speed: 3.8, course: 112.0

请大佬帮忙看一下,谢谢。
BG6RSH
帖子: 189
注册时间: 周日 6月 23, 2019 12:00 pm

Re: traccar6.11.1无坐标情况下有BUG

帖子 BG6RSH »

12月19日后更新的 Docker 镜像修复了这个错误,你可以重新拉取试一下,如果还有问题,麻烦将日志提交到这里。
psrmszh
帖子: 2
注册时间: 周四 12月 25, 2025 3:39 pm

Re: traccar6.11.1无坐标情况下有BUG

帖子 psrmszh »

感谢回复,由于我水平有限,只会在WINDOWS平台下部署,不会使用Docker镜像,能否在方便的时候搞一下其他的方法。感谢!
BG6RSH
帖子: 189
注册时间: 周日 6月 23, 2019 12:00 pm

Re: traccar6.11.1无坐标情况下有BUG

帖子 BG6RSH »

到百度网盘https://pan.baidu.com/s/1tjp1crkXbrWxq4nM7vCA1A 提取码: ib6k下载traccar-other-6.11.1-amap.zip压缩包,替换traccar中的所有文件,重新启动一下服务就行了,注意先备份。
游客

Re: traccar6.11.1无坐标情况下有BUG

帖子 游客 »

从网盘下载解压后,按照方法操作,仍然存在这里问题。GPS坐标都是0 火星坐标纬度是0 经度应该是最后一次有效坐标。
游客

Re: traccar6.11.1无坐标情况下有BUG

帖子 游客 »

我也遇到这个情况。
经过测试,这3条都加上就可以过滤掉经度或者纬度单一坐标为0的情况了。
<entry key="filter.enable">true</entry>
<entry key='filter.zero'>true</entry>
<entry key='filter.invalid'>true</entry>
游客

Re: traccar6.11.1无坐标情况下有BUG

帖子 游客 »

游客 写了: 周六 1月 24, 2026 9:51 pm 我也遇到这个情况。
经过测试,这3条都加上就可以过滤掉经度或者纬度单一坐标为0的情况了。
<entry key="filter.enable">true</entry>
<entry key='filter.zero'>true</entry>
<entry key='filter.invalid'>true</entry>
进一步测试发现还是代码有问题。会导致特定情况下没有转换,并把lat重置为了0.0000
我按照Gemini解析进行修改。目前解决了这个问题。
Gemini分析结果:
在 HuabaoProtocolDecoder.java 第 395-397 行中:

Java
if (BitUtil.check(status, 3)) {
position.setLongitude(-lon); // 这里调用的是原生的 setLongitude!!
} else {
position.setLongitude(lon); // 这里也是原生的 setLongitude!!
}
导致的结果:
纬度部分:调用了 setLatitudeWgs84(lat)。它设置了私有变量 latitudeWgs84,但因为此时 longitudeWgs84 还是默认值 0,所以没有触发 convert(),因此主变量 this.latitude 依然是 0。

经度部分:调用了 setLongitude(lon)。这是 Traccar 原生方法,它直接给主变量 this.longitude 赋值了,但它没有给 this.longitudeWgs84 赋值。

最终状态:

position.latitude = 0.0(因为 convert() 没跑)

position.longitude = 120.03898(直接赋值成功)

这就是为什么你看到的解析结果里 Lat 是 0。

2. 修复方案
需要修改 HuabaoProtocolDecoder.java,将经度的赋值方法也统一改为 setLongitudeWgs84。

请将 HuabaoProtocolDecoder.java 第 394 行起的代码修改为:

Java
// 纬度部分 (保持 Wgs84 调用)
if (BitUtil.check(status, 2)) {
position.setLatitudeWgs84(-lat);
} else {
position.setLatitudeWgs84(lat);
}

// 经度部分 (必须改用 Wgs84 调用,否则无法触发 Position 里的 convert)
if (BitUtil.check(status, 3)) {
position.setLongitudeWgs84(-lon); // 修改这里:加了 Wgs84 后缀
} else {
position.setLongitudeWgs84(lon); // 修改这里:加了 Wgs84 后缀
}
回复