高德地图AMapException: 非法坐标值

1 android studio 打印log如下:

com.amap.api.maps.AMapException: 非法坐标值
01-03 10:48:09.878 16395-16477/? I/SensorState: sensor:2 enable:false uid:10398
01-03 10:48:09.878 16395-16477/? I/SensorState: removeSensor,mHandles:{}
01-03 10:48:09.878 12597-12597/cn.xa.tjy W/System.err:     at com.amap.api.maps.model.LatLng.<init>(LatLng.java:58)
01-03 10:48:09.878 16395-16477/? I/PGServer: report state:4 event type:2 pid:2 uid:10398 pkg:null to pid: 15595
01-03 10:48:09.878 12597-12597/cn.xa.tjy W/System.err:     at com.amap.api.maps.model.LatLng.<init>(LatLng.java:35)

原因分析:

先看下高德地图原码

 public LatLng(double var1, double var3, boolean var5) {
        if(var5) {
            if(-180.0D <= var3 && var3 < 180.0D) {
                this.longitude = var3;
            } else {
                this.longitude = ((var3 - 180.0D) % 360.0D + 360.0D) % 360.0D - 180.0D;
            }

            if(var1 < -90.0D || var1 > 90.0D) {
                try {
                    throw new AMapException("非法坐标值");
                } catch (AMapException var7) {
                    var7.printStackTrace();
                }
            }

            this.latitude = Math.max(-90.0D, Math.min(90.0D, var1));
        } else {
            this.latitude = var1;
            this.longitude = var3;
        }

    }
参数介绍:创建var1 :纬度,var2:经度,var5:是否检查坐标
  • latlng创建的时候new LatLng(double v1,duble v2)会对坐标进行检查
  • 纬度检查规则如下:
 if(var1 < -90.0D || var1 > 90.0D) {
                try {
                    throw new AMapException("非法坐标值");
                } catch (AMapException var7) {
                    var7.printStackTrace();
                }
            }

            this.latitude = Math.max(-90.0D, Math.min(90.0D, var1));
  • 如果经度检查规则如下:
                this.longitude = var3;
            } else {
                this.longitude = ((var3 - 180.0D) % 360.0D   + 360.0D) % 360.0D - 180.0D;
            }

常见原因:new Latlng(lat,lng),lat,lng数据搞错了,创建latlng的时候换个位置就可以了。^_^

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值