Swift - Coordinate不可用:自iOS 7起,API已弃用

时间:2014-11-28 20:27:39

标签: swift annotations mapkit mkannotation

我试图通过self.mapView.annotations来迭代一系列注释。

我遇到的问题是我收到错误,因为坐标不可用:从iOS 7及更早版本开始使用的API不适用于Swift

我有什么想法可以解决这个问题?我看一下iOS开发人员库,但我找不到任何方法来获取每个注释的坐标。

var zoomRect:MKMapRect = MKMapRectNull;

for (index,annotation) in enumerate(self.mapView.annotations) {
    var annotationPoint:MKMapPoint = MKMapPointForCoordinate(annotation.coordinate)
    var pointRect:MKMapRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.1, 0.1);
    zoomRect = MKMapRectUnion(zoomRect, pointRect);
}

self.mapView.setVisibleMapRect(zoomRect, animated: true)

此代码的主要思想是使地图居中,以便用户能够看到所有注释。我在Objective C中得到了这个代码(来自SO的另一个问题)并将其转换为Swift但仍然没有运气。

1 个答案:

答案 0 :(得分:1)

annotations的{​​{1}}属性返回MKMapView 并且[AnyObject]!没有AnyObject属性。 您必须转换为coordinate数组:

[MKAnnotation]

(代码中的显式类型注释不是必需的,以及变量 循环内部实际上是常量,因此您可以使用var zoomRect = MKMapRectNull for annotation in self.mapView.annotations as [MKAnnotation] { let annotationPoint = MKMapPointForCoordinate(annotation.coordinate) let pointRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.1, 0.1) zoomRect = MKMapRectUnion(zoomRect, pointRect) } 声明它们。)

请注意,您可以通过reduce操作替换for循环:

let