【问题标题】:Android: How to: validate Location's latitude and longitude valuesAndroid:如何:验证位置的纬度和经度值
【发布时间】:2022-02-16 14:57:52
【问题描述】:

您如何验证位置?似乎将其设置为这些值 Location.setLatitude(999) & Location.setLongitude(999) 是有效的(意味着没有任何验证)。有没有Android方法来验证它? (我知道它的最大值和最小值,但只是想知道是否已经可以使用 Android)

【问题讨论】:

    标签: android


    【解决方案1】:

    这是验证纬度和经度的简单函数

    public boolean isValidLatLng(double lat, double lng){
        if(lat < -90 || lat > 90)
        {
            return false;
        }
        else if(lng < -180 || lng > 180)
        {
            return false;
        }
        return true;
    }
    

    纬度衡量一个地方位于赤道以北或以南的距离。赤道位于 0°,北极位于北纬 90°(或 90°,因为正纬度意味着北),南极位于南纬 90°(或 –90°)。纬度测量范围从 0° 到 (+/-)90°。

    经度衡量一个地方位于本初子午线以东或以西的距离。本初子午线穿过英国格林威治。经度测量范围从 0° 到 (+/-)180°。

    参考来自https://msdn.microsoft.com/en-us/library/aa578799.aspx

    【讨论】:

      【解决方案2】:

      我认为 Android 中没有任何东西可以做到这一点。就像你说的,最好只定义最小值和最大值。

      附带说明,您可以调用 Google 的地理编码服务并传入您的 lat 和 long 作为输入参数,以在调用 Location.setLatitude() 之前检查有效位置的结果: http://code.google.com/apis/maps/documentation/geocoding/

      【讨论】:

      • >在调用 Location.setLatitude() 之前检查结果是否为有效位置 -> 无法理解这句话,您能详细说明一下吗?如何查看结果?
      • 我在想你可以调用服务并获得 JSON 或 XML 结果。这是 JSON 响应的示例;您可以检查“OK”状态并根据此返回码允许或拒绝参数:code.google.com/apis/maps/documentation/geocoding/#JSON
      • 知道了。但我选择通过定义最小值和最大值来创建自己的简单验证,因为我没有使用谷歌的 api。
      【解决方案3】:

      我在操场上制作的 Kotlin 解决方案可以在 here 找到。逻辑来自另一个stack overflow answer

      data class LatLng(val latitude: Double, val longitude: Double) {
          val isValid: Boolean by lazy {
              latitude >= -90 && latitude <= 90
                      && longitude >= -180 && longitude <= 180
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-08
        • 1970-01-01
        • 2011-08-31
        • 1970-01-01
        • 2017-05-09
        • 1970-01-01
        • 1970-01-01
        • 2012-11-08
        相关资源
        最近更新 更多