如何验证经度和纬度

The*_*imp 27 gps geolocation coordinates mkmapview mkannotation

我有两个UITextField,用户可以在纬度和经度中输入,这些坐标然后用于在MKMapView上创建一个引脚.

我想找到一种方法来验证他们输入的值是实际的GPS坐标还是只是一堆垃圾.有没有办法做到这一点?

rid*_*rid 82

纬度必须在-90和90与之间的数字经度 -180和180之间.

  • 我们应该包括边境吗?(long> = -180 && long <= 180)或(long> -180 && long <180)? (5认同)
  • @SahilSharma有这个理由吗?如果其中一个坐标恰好处于其中一个极端,会发生什么(例如:https://www.google.com.br/maps/place/16°47'36.6"S+180°00'00.0"E )? (5认同)
  • 是的,包括边界,但只需了解经度,-180 和 180 是同一点。对于纬度,90 是地理北极,-90 是地理南极。 (2认同)

Sum*_*rel 10

以下是在 JavaScript 中验证它的函数。

  1. 纬度必须是介于 -90 和 90 之间的数字
const isLatitude = num => isFinite(num) && Math.abs(num) <= 90;
Run Code Online (Sandbox Code Playgroud)
  1. 经度必须是介于 -180 和 180 之间的数字
const isLongitude = num => isFinite(num) && Math.abs(num) <= 180;
Run Code Online (Sandbox Code Playgroud)


abh*_*bhi 5

使用遵循纬度和经度的正则表达式,我们可以进行验证。

在Objective-C中使用转义符:

纬度正则表达式:

@"^(\\+|-)?((\\d((\\.)|\\.\\d{1,6})?)|(0*?[0-8]\\d((\\.)|\\.\\d{1,6})?)|(0*?90((\\.)|\\.0{1,6})?))$"
Run Code Online (Sandbox Code Playgroud)

经度正则表达式:

@"^(\\+|-)?((\\d((\\.)|\\.\\d{1,6})?)|(0*?\\d\\d((\\.)|\\.\\d{1,6})?)|(0*?1[0-7]\\d((\\.)|\\.\\d{1,6})?)|(0*?180((\\.)|\\.0{1,6})?))$"
Run Code Online (Sandbox Code Playgroud)

纬度和经度的正则表达式:

纬度正则表达式:

^(\+|-)?((\d((\.)|\.\d{1,6})?)|(0*?[0-8]\d((\.)|\.\d{1,6})?)|(0*?90((\.)|\.0{1,6})?))$
Run Code Online (Sandbox Code Playgroud)

经度正则表达式:

^(\+|-)?((\d((\.)|\.\d{1,6})?)|(0*?\d\d((\.)|\.\d{1,6})?)|(0*?1[0-7]\d((\.)|\.\d{1,6})?)|(0*?180((\.)|\.0{1,6})?))$
Run Code Online (Sandbox Code Playgroud)

  • 我不知道这比接受的答案取得了什么成果(而不是使问题复杂化) (11认同)