为啥 MKCoordinateSpan 发生变化?

Posted

技术标签:

【中文标题】为啥 MKCoordinateSpan 发生变化?【英文标题】:Why MKCoordinateSpan changes?为什么 MKCoordinateSpan 发生变化? 【发布时间】:2010-03-29 10:43:20 【问题描述】:

当我调试下面的代码时,我看到 mapkit 从我提供的内容中更改了跨度。 span2 包含的数字与提供的数字不同。为什么会这样?

- (void) viewDidLoad

    [super viewDidLoad];

    CLLocationCoordinate2D loc;
    loc.latitude = self.atm.lat;
    loc.longitude = self.atm.lon;

    MKCoordinateSpan span1 = MKCoordinateSpanMake(0.05f, 0.05f);
    self.mapView.region = MKCoordinateRegionMake(loc, span1);
    // at this point numbers are not 0.05 anymore
    MKCoordinateSpan span2 = self.mapView.region.span;
// ... more code

【问题讨论】:

【参考方案1】:

请注意,纬度和经度变化不同,因此方形 MapView 实际上会显示具有不同坐标跨度值的区域。这可能会导致您的地图视图区域的跨度(稍微?)与您设置的不同。

在参考 MKMapView 的区域属性时,有一些相关的短语:

只改变区域的中心坐标仍然可以 导致跨度隐式变化。 这是因为 由跨度变化表示的距离 在不同的纬度和经度 并且地图视图可能需要调整 考虑新的跨度 位置。

【讨论】:

感谢您的想法,我会检查是否是这种情况。【参考方案2】:

具有相同纬度和经度跨度值的方形 MapView 几乎总是会经历上述跨度变化,因为当您从赤道移动到任一极点时,纵向弧长会发生显着变化。随着纬度接近+/-90,纵向弧长接近0。

此外,如果 MapView 区域不是方形的,相同的跨度值也会发生变化(因为跨度仅指当时实际可见的区域)。

【讨论】:

以上是关于为啥 MKCoordinateSpan 发生变化?的主要内容,如果未能解决你的问题,请参考以下文章

为啥堆在java中发生变化

为啥我的变量“c”发生了变化?

为啥在 URLSessionTask 完成后 indexPath 会发生变化?

为啥我的原始列表发生了变化?

MKCoordinateSpan 背后的逻辑

为啥我往WMP添加音乐文件时属性发生变化?