Android端Google Maps仅显示单标记、无法展示Firebase多用户位置求助
仅显示单个Marker的排查方向
硬编码两组经纬度测试仍只出一个点的常见坑
- 执行链路断了:逐行检查两段硬编码
addMarker代码,确认中间没有抛异常、没有提前return、没有触发循环中断逻辑,导致第二段添加代码根本没跑。最直接的验证方式是在每段addMarker后面打日志,看两个方法是不是都真的执行了。 - 误触发地图清空:查一下
map.clear()的调用位置,很多人把加Marker的逻辑写在位置监听回调里,每收到一次定位更新就先把全图内容清掉再加新点,最后自然只剩最后更新的那个点位。 - 视角没对准:加完点之后如果自动把相机拉到变焦等级很高的近景位置,另一个点刚好在屏幕可视范围外,看起来就像只显示了一个点。测试的时候直接把变焦等级调到3-5级的世界视图,一眼就能看到所有点是不是真的加上了。
- 全局变量误删:别在Activity里搞个全局的
Marker变量,每次加Marker都把返回值塞进去,之后如果对这个全局变量调用remove(),会直接把对应Marker从图上删掉。硬编码测试的时候不用接返回值,直接调map.addMarker(...)就行。
Firebase读取全量位置场景的专属问题
- 监听绑错层级:别把位置监听器绑在单个用户的子节点上,要把监听器绑在所有位置的公共父节点,等拿到完整的全量数据快照后,再循环遍历每个子节点解析经纬度、批量加Marker。绝对不要在单个子节点的回调里调
map.clear(),不然每收到一条数据就清一次全图,最后只剩最后同步的那个点。 - 遍历逻辑错了:读Firebase快照的时候,检查循环是不是只跑了一次就退了,很多人写循环的时候拿到第一个子节点就提前break,根本没读完剩下的位置数据。
内容的提问来源于stack exchange,提问作者John Smith
相关产品推荐
相关产品推荐

