我有一个位置的纬度和经度。有没有办法在那个点以南100米处计算?
我正在为iOS7平台的Objective C编写代码。
我正在寻找能够有效发挥作用的一些功能。
我尝试过Haversine公式(如下所示)。但是,由于Haversine认为地球是一个球体,计算变得越来越复杂,价值也不准确。
a = sin²((φ1-φ2)/2) + cos(φ1)*cos(φ2)*sin²((λ1-λ2)/2)
c = 2*atan2(√a, √(1−a))
distance = R*c
(φ is latitude, λ is longitude, R is Earth’s = 6,371km)
答案 0 :(得分:2)
经度代表东/西的位置,因此它将保持不变。
将纬度表示为有符号的度数,赤道以北为正数,赤道以南为负数。然后向南走100米就要往南走100度对应的度数。地球的周长为40075公里,即40075000米,代表360度。因此,100米对应于100/40075000 * 360,或大约0.0008983度。所以从纬度中减去0.0008983度来得到你的答案。
以上假设地球是球形的。事实上它是一个椭圆体,如果你想把它考虑得恰到好处,答案会更复杂,但对于大多数用途来说,假设一个球体的计算应该足够好。
答案 1 :(得分:1)
我找到了一种方法来做到这一点。想分享同样的事情......
使用MKMapPoint
将坐标转换为MKMapPointForCoordinate
。
然后加上或减去步骤1中得到的MKMapPoin
t的x或y坐标。使用MKMapPointMake
执行此操作。
将MKMapPoint
转换回CLLocationCoordinate2D
。使用MKCoordinateForMapPoint
执行此操作。