【发布时间】:2011-08-11 12:57:23
【问题描述】:
我想从谷歌给出的东北和西南点创建一个 MKCoordinateRegion(放大到地图上的好区域)。为此,我需要计算这两个坐标之间的中心坐标。有什么线索吗?我可以做简单的数学,但我会遇到赤道问题......
谢谢!!!
【问题讨论】:
-
这些答案对您有帮助吗?
标签: iphone objective-c ios ipad mkmapview
我想从谷歌给出的东北和西南点创建一个 MKCoordinateRegion(放大到地图上的好区域)。为此,我需要计算这两个坐标之间的中心坐标。有什么线索吗?我可以做简单的数学,但我会遇到赤道问题......
谢谢!!!
【问题讨论】:
标签: iphone objective-c ios ipad mkmapview
假设您的意思是反子午线而不是赤道,那么这里是(虽然所有这些都适用于扁平地图并且应该足以满足您的目的,但它完全是在一个球体上。请参阅底部的注释)。
我在其他情况下所做的是从任一点开始,如果下一个点向东超过 180 度,我将其转换为向西小于 180 度,就像这样
如果(pointa.lon - pointb.lon > 180) pointb.lon += 360: 否则如果(pointa.lon - pointb.lon
此时 pointb.lon 可能是无效的经度,例如 190,但您至少可以计算出 pointa 和点 b 之间的中点,因为它们将处于连续刻度上,因此您可能有点 175 和 190。然后只需将它们之间的中点设为 182.5,然后将其转换以确保它在通常的范围内,并且得到 -177.5 作为两点之间的纬度。计算纬度很容易。
当然,在球体上这是错误的,因为 (-180,89) 和 (180,89) 之间的中点是 (0*,90) 而不是 (0,89)。
* = 可以是任何东西
【讨论】:
另外,你不能只用定义的角制作 zoomToRect 吗?它可以节省您进行此计算的时间,然后下一个计算将计算出以该点为中心时需要达到的缩放级别,以包括您所知道的两个角。由于地图应用程序似乎没有滚动到反子午线,我认为 MKMapview 也不能,因此您的矩形必须将东北坐标作为右上角,西南坐标作为左下角。
【讨论】:
This SO post 具有缩放地图视图以适应其所有注释的代码。
【讨论】: