You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中google_maps_flutter限制地图边界报错:纬度不满足断言条件

解决google_maps_flutter中CameraTargetBounds的纬度断言错误

你遇到的这个断言错误,核心问题是西南角(SW)的纬度数值大于东北角(NE)的纬度数值,这违反了LatLngBounds的构造规则——地理上西南角必须是更靠南的点(纬度数值更小),东北角必须是更靠北的点(纬度数值更大)。

下面是具体的排查和修复步骤:

  • 第一步:先确认你的坐标值是否正确
    先打印出UniCampusSW和UniCampusNE的具体纬度数值,排查是否搞反了坐标:

    print("SW纬度: ${UniCampusSW.latitude}, NE纬度: ${UniCampusNE.latitude}");
    

    如果输出结果里SW的纬度比NE大,那就是你获取坐标时把两个点的纬度搞混了。

  • 第二步:修正LatLngBounds的坐标设置
    有两种修复方式:

    1. 直接调整你获取的原始坐标,确保UniCampusSW.latitude <= UniCampusNE.latitude
    2. 用代码自动修正边界(适合不确定坐标是否正确的场景),手动计算出符合规则的地理边界:
      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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:24:03