0

这就像 5 个小时我坚持这个问题。我最近开始使用 Swift,不能说我喜欢它,而且我遇到了一个又一个的问题。我正在尝试做非常简单的事情。我有具有日期(NSDate)、持续时间(NSTimeInterval)、位置名称(字符串)和位置映射视图(MKMapView)的类。它没有实现任何协议。我想在我的初始化程序中获取坐标并将其设置为 MapView。我发现很少有关于如何做到这一点的指南,但碰巧我对基本的事情有问题。我什至无法设置区域。这是init的片段:

    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))

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

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

4

2 回答 2

2

问题是这一行:

self.locationMapView = MKMapView();

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

于 2016-02-27T14:37:46.377 回答
0

部分答案:

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

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

注意:您仍然不能对像 tempMapView 这样的附加变量进行操作,然后将其分配给实际的 MapView。它行不通。

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

于 2016-02-27T14:30:01.800 回答