Flutter中google_maps_flutter限制地图边界报错:纬度不满足断言条件
解决google_maps_flutter中CameraTargetBounds的纬度断言错误
你遇到的这个断言错误,核心问题是西南角(SW)的纬度数值大于东北角(NE)的纬度数值,这违反了LatLngBounds的构造规则——地理上西南角必须是更靠南的点(纬度数值更小),东北角必须是更靠北的点(纬度数值更大)。
下面是具体的排查和修复步骤:
第一步:先确认你的坐标值是否正确
先打印出UniCampusSW和UniCampusNE的具体纬度数值,排查是否搞反了坐标:print("SW纬度: ${UniCampusSW.latitude}, NE纬度: ${UniCampusNE.latitude}");如果输出结果里SW的纬度比NE大,那就是你获取坐标时把两个点的纬度搞混了。
第二步:修正LatLngBounds的坐标设置
有两种修复方式:- 直接调整你获取的原始坐标,确保
UniCampusSW.latitude <= UniCampusNE.latitude - 用代码自动修正边界(适合不确定坐标是否正确的场景),手动计算出符合规则的地理边界:
这段代码会自动帮你修正坐标顺序,确保cameraTargetBounds: CameraTargetBounds( LatLngBounds( southwest: LatLng( // 取两个点中更小的纬度和经度作为西南角 min(UniCampusSW.latitude, UniCampusNE.latitude), min(UniCampusSW.longitude, UniCampusNE.longitude), ), northeast: LatLng( // 取两个点中更大的纬度和经度作为东北角 max(UniCampusSW.latitude, UniCampusNE.latitude), max(UniCampusSW.longitude, UniCampusNE.longitude), ), ), ),LatLngBounds的构造符合要求,同时也兼顾了经度的正确性(小范围区域内,西南经度应小于东北经度)。
- 直接调整你获取的原始坐标,确保
第三步:验证修复效果
修正后重新运行代码,断言错误会消失,地图的滚动区域也会被正确限制在你设定的校园范围内。
内容的提问来源于stack exchange,提问作者Andrew Stevenson
相关产品推荐
相关产品推荐

