Swift 2.x无法设置MapView Region

时间:2016-02-26 20:39:33

标签: ios swift2 mkmapview mkcoordinateregion

就像5个小时我坚持这个问题。我最近刚开始使用Swift,不能说我喜欢它,而且在问题发生之后我就会遇到问题。我想做的很简单。我有类有日期(NSDate),durration(NSTimeInterval),locationName(String)和locationMapView(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))

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

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

2 个答案:

答案 0 :(得分:2)

问题在于这一行:

self.locationMapView = MKMapView();

您创建了一个地图视图,但没有为其指定框架。因此它的尺寸为零。因此它不能有一个区域。

答案 1 :(得分:0)

部分答案:

我有点深入了解,我想我有答案。如果它没有直接连接到显示器(通过插座),似乎你无法为MKMapView对象分配任何内容。

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

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

我希望我帮助那些偶然发现同样问题的人。如果有人知道为什么你不能使用没有直接连接到显示器或如何处理它的MapView,请告诉我。