【发布时间】:2022-02-16 14:57:52
【问题描述】:
您如何验证位置?似乎将其设置为这些值 Location.setLatitude(999) & Location.setLongitude(999) 是有效的(意味着没有任何验证)。有没有Android方法来验证它? (我知道它的最大值和最小值,但只是想知道是否已经可以使用 Android)
【问题讨论】:
标签: android
您如何验证位置?似乎将其设置为这些值 Location.setLatitude(999) & Location.setLongitude(999) 是有效的(意味着没有任何验证)。有没有Android方法来验证它? (我知道它的最大值和最小值,但只是想知道是否已经可以使用 Android)
【问题讨论】:
标签: android
这是验证纬度和经度的简单函数
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°。
【讨论】:
我认为 Android 中没有任何东西可以做到这一点。就像你说的,最好只定义最小值和最大值。
附带说明,您可以调用 Google 的地理编码服务并传入您的 lat 和 long 作为输入参数,以在调用 Location.setLatitude() 之前检查有效位置的结果: http://code.google.com/apis/maps/documentation/geocoding/
【讨论】:
我在操场上制作的 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
}
}
【讨论】: