Swift 2.x 无法设置 MapView Region



就像 5 小时我坚持这个问题。我最近开始了 Swift,不能说我喜欢它,我遇到了一个又一个的问题。我正在尝试做非常简单的事情。我有具有date(NSDate),durration(NSTimeInterval),locationName(String)和locationMapView(MKMapView)的类。它不实现任何协议。我想在我的初始值设定项中获取坐标并将其设置为 MapView。我找到了一些关于如何做到这一点的指南,但碰巧我对基本事情有问题。我什至无法设置区域。这是初始化的片段:

    self.locationMapView = MKMapView();
    let coordinate:CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: 34.03, longitude: 118.14)
    let span = MKCoordinateSpanMake(100, 80)
    let region = MKCoordinateRegionMake(coordinate, span)
    self.locationMapView!.setRegion(region, animated: true)
    print(String(region))
    print("---")
    print(String(locationMapView!.region))

以下是控制台中显示的内容:

    MKCoordinateRegion(center: __C.CLLocationCoordinate2D(latitude: 34.03, longitude: 118.14), span: __C.MKCoordinateSpan(latitudeDelta: 100.0, longitudeDelta: 80.0))
        ---
    MKCoordinateRegion(center: __C.CLLocationCoordinate2D(latitude: nan, longitude: nan), span: __C.MKCoordinateSpan(latitudeDelta: 0.0, longitudeDelta: 0.0))

我花了一段时间才弄清楚没有分配值,但我不知道为什么。我在许多答案和指南中找到了这种代码。我的实现有什么问题?

谢谢大家的帮助,如果这是愚蠢的事情,我很抱歉。

问题是这一行:

self.locationMapView = MKMapView();

您创建了一个地图视图,但未为其分配框架。因此它的大小为零。因此,它不能有一个区域。

部分答案:

我已经深入挖掘了一点,我想我有我的答案。似乎您无法将任何内容分配给 MKMapView 对象,如果它没有直接连接到显示器(通过插座)。

我所做的是从我的类中删除了与MapView相关的所有内容,并将其移动到基于UITableViewCell的类中,该类保留了特定MapView的出口。在那里,我能够分配坐标,一切都按预期工作。

注意:您仍然无法对其他变量(如tempMapView)进行操作,然后将其分配给实际的MapView。这是行不通的。

我希望我帮助那些和我一样偶然发现同样问题的人。如果有人知道为什么您无法使用未直接连接到显示器的MapView或如何解决它,请告诉我。

相关内容

  • 没有找到相关文章

最新更新