地图注释在地图上不可见

时间:2016-07-21 16:15:11

标签: ios mapkit mkannotation

我正在尝试在我的应用程序中显示在MapKit地图上构建入口的注释。

为此,我创建了一个实现EntranceAnnotation的类MKAnnotation,以便稍后为这些实现自定义MKAnnotationView。出于这个问题的目的,虽然我在尝试用简单的MKPointAnnotation来解决这个问题时也遇到了问题。

我正在使用MKMapView的自定义子类,其中包含以下代码。

let entranceAnnotations: [MKPointAnnotation] = selectedBuilding.entrances.map { 
    entrance in
    let ann = MKPointAnnotation()
    ann.coordinate = entrance.location
    return ann
}
addAnnotations(entranceAnnotations)

如果我在调用mapView之前和之后检查addAnnotations注释列表,我可以看到添加的注释肯定出现在列表中。

我目前没有覆盖view(for annotation: MKAnnotation) -> MKAnnotationView?,因为对于简单的MKPointAnnotation来说这不是必需的。但即使我这样做,并返回具有给定颜色的MKPinAnnotationView的新实例,这似乎没有任何效果。无论我在做什么,这些注释都没有出现在我的地图上。

这里有什么我可能会遗失的吗?即使尝试添加一个简单的新注释也无法产生效果。

let annotation = MKPointAnnotation()
annotation.coordinate = CLLocationCoordinate2D(latitude: 51.028500, longitude: 13.728653)
addAnnotation(annotation)

如果它有所作为,我试图在Xcode 8 Beta 3的iOS 10 Beta 14A5309d上运行它。

1 个答案:

答案 0 :(得分:0)

我自己遇到了这个问题。我的MKAnnotationView的自定义子类依赖于在我的覆盖initWithFrame:和iOS 10中完成的一些初始化,通过调用initWithAnnotation:reuseIdentifier:初始化annotationView最终将调用到initWithFrame:。但是,从iOS 10开始,永远不会调用initWithFrame:。结果是我的自定义注释的框架为(0, 0, 0, 0)并且没有显示。添加

[self setFrame:CGRectMake(0, 0, someWidth, someHeight];

initWithAnnotation:reuseIdentifier:内部使注释再次出现在iOS10下。显然需要一些工作来映射到等效的Swift解决方案,但这可能是你的问题。在初始值设定项中设置断点,看看哪个被击中!