2011-08-11 20 views
0

我想创建一个MKCoordinateRegion(用于放大地图上的好区域),由Google提供的东北和西南点。为此,我需要计算这两个坐标之间的中心坐标。任何线索?我可以做简单的数学,但我会遇到赤道问题...iOS - 两个坐标的中心位置

谢谢!

+0

这些答案有帮助吗? – Craig

回答

-1

This SO post有缩放地图视图以适应其所有注释的代码。

+0

谢谢,但它似乎在赤道上有问题... – ncohen

+0

你是指赤道还是反梅里达?由于纬度连续,所以没有理由在赤道上遇到问题。 – Craig

0

假设你的意思是反经络而不是赤道,那么这里就行了(尽管所有这些工作都在一张平坦的地图上,并且应该足够用于你的目的,但它完全嵌套在一个球体上,见底部的注释)。

我在其他情况下,做什么是开始在任一点,如果下一个点超过180度以东,我把它转换,使其低于180到西,像这样

如果(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

另外,你不能只是zoomToRect与定义的角落?这会节省你做这个计算,然后下一个计算你需要在什么缩放级别的中心位置,包括你知道的两个角落。由于地图应用似乎没有滚过反经络,所以我认为MKMapview不能这样做,所以你的矩形必须有东北坐标作为右上角和西南左下角。

+0

请不要让更多的帖子添加到您的答案;只是编辑你以前的答案。这里的问题和答案不像论坛中的线索。 –

+0

我觉得我的答案是解决问题的两种不同方式,因此他们分开输入,以便用户可以选择哪一个最好。但是看起来他们已经在其他地方徘徊了,而没有对其中的任何一个发表评论,所以我们永远不会知道哪一个可以工作。 – Craig