我想从Google提供的东北和西南点创建一个MKCoordinateRegion(缩放到地图上的好区域)。为此,我需要计算这两个坐标之间的中心坐标。任何线索?我可以做简单的数学但我会遇到赤道问题......
感谢!!!
答案 0 :(得分:1)
假设你的意思是反子午线,而不是赤道,那么这里(虽然所有这些都在平坦的地图上工作,并且应该足够好用于你的目的,它完全在一个球体上打孔。请参见底部的注释)。
我在其他情况下所做的是从任一点开始,如果下一个点向东超过180度,我将其转换为西方小于180度
if(pointa.lon - pointb.lon> 180) pointb.lon + = 360: 否则如果(pointa.lon - pointb.lon< -180) pointb.lon - = 360
此时pointb.lon可能是一个无效的经度,如190,但你至少可以计算出指针和点b之间的中点,因为它们将是连续的,所以你可能有点175和190。然后只需将它们之间的中点设为182.5,然后将其转换为确保它在通常的限制范围内,并获得-177.5作为两点之间的纬度。计算纬度很容易。
当然在球体上这是错误的,因为(-180,89)和(180,89)之间的中点是(0 *,90)而不是(0,89)。
* =可以是任何东西
答案 1 :(得分:0)
另外,你不能只用定义的角落制作zoomToRect吗?它会保存你进行这个计算,然后下一个可以计算出当你在该点上居中时需要的缩放级别,以包括你知道的两个角落。由于地图应用程序似乎没有滚动反子午线,我认为MKMapview不能这样,所以你的矩形必须将东北坐标作为右上角,西南作为左下角。
答案 2 :(得分:-1)
This SO post具有缩放地图视图以适合其所有注释的代码。