【问题标题】:iOS - Center position of two coordinatesiOS - 两个坐标的中心位置
【发布时间】:2011-08-11 12:57:23
【问题描述】:

我想从谷歌给出的东北和西南点创建一个 MKCoordinateRegion(放大到地图上的好区域)。为此,我需要计算这两个坐标之间的中心坐标。有什么线索吗?我可以做简单的数学,但我会遇到赤道问题......

谢谢!!!

【问题讨论】:

  • 这些答案对您有帮助吗?

标签: iphone objective-c ios ipad mkmapview


【解决方案1】:

假设您的意思是反子午线而不是赤道,那么这里是(虽然所有这些都适用于扁平地图并且应该足以满足您的目的,但它完全是在一个球体上。请参阅底部的注释)。

我在其他情况下所做的是从任一点开始,如果下一个点向东超过 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)。
* = 可以是任何东西

【讨论】:

    【解决方案2】:

    另外,你不能只用定义的角制作 zoomToRect 吗?它可以节省您进行此计算的时间,然后下一个计算将计算出以该点为中心时需要达到的缩放级别,以包括您所知道的两个角。由于地图应用程序似乎没有滚动到反子午线,我认为 MKMapview 也不能,因此您的矩形必须将东北坐标作为右上角,西南坐标作为左下角。

    【讨论】:

    • 请不要发更多帖子来添加到您的答案中;只需编辑您以前的答案。这里的问题和答案不像论坛中的主题。
    • 我觉得我的答案是解决问题的两种不同方法,因此它们分别输入,以便用户可以选择哪一种是最好的。但似乎他们已经在其他地方徘徊并且没有评论任何一个,所以我们永远不会知道哪一个(如果有的话)有效。
    【解决方案3】:

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

    【讨论】:

    • 你指的是赤道还是反子午线?赤道没有任何问题,因为它的纬度是连续的。
    猜你喜欢
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 2012-09-21
    • 2015-03-28
    • 2020-04-13
    相关资源
    最近更新 更多