2016-07-21 4 views
0

Я пытаюсь отобразить аннотации для ввода входов на карте MapKit в моем приложении.Карта Аннотации не отображаются на карте

Для этого я создал класс EntranceAnnotation, реализующий MKAnnotation, так что я могу позже реализовать для них таможню MKAnnotationView. Для цели этого вопроса, хотя я также испытываю проблему при попытке решить это с помощью простых MKPointAnnotation s.

Я использую собственный подкласс 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 s. Но даже если я это сделаю и возвращу новые экземпляры MKPinAnnotationView с заданным цветом, это, кажется, не имеет никакого эффекта. Что бы я ни делал, эти аннотации не появляются на моей карте.

Есть ли что-то, что мне здесь не хватает? Даже попытка добавить одну простую новую аннотацию не дает эффекта.

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

Если это имеет значение, я пытаюсь запустить это на IOS 10 Beta 14A5309d с Xcode 8 Beta 3.

+0

Вы добавляете аннотации к основной теме? –

+0

Я пробовал обернуть вызов 'addAnnotations' в' OperationQueue.main.addOperation {} 'или' DispatchQueue.main.async {} ', к сожалению, к сожалению. –

+0

Хорошо, '' mapView' имеет делегат, который соответствует протоколу 'MKMapViewDelegate'. Попробуйте отладить mapView для 'fullRendered' в следующей функции -' func mapViewDidFinishRenderingMap (mapView: MKMapView, fullRendered: Bool) '. Возможно, вы добавили аннотации, прежде чем карта будет полностью отображена ... –

ответ

0

Я столкнулся с этим сам. Мой пользовательский подкласс MKAnnotationView полагался на некоторую инициализацию, выполненную в моем переопределении initWithFrame: и вплоть до iOS 10, инициализация аннотацииView путем вызова initWithAnnotation:reuseIdentifier: в конечном итоге вызовет в initWithFrame :. Однако, начиная с iOS 10, initWithFrame: никогда не вызывается. Результатом этого было то, что мои пользовательские аннотации имели рамку (0, 0, 0, 0) и не отображались. Добавление

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

внутри initWithAnnotation:reuseIdentifier: сделал аннотации появляются снова под iOS10. Очевидно, требует некоторой работы для сопоставления с эквивалентным решением Swift, но это вполне может быть вашей проблемой. Установите контрольные точки в свои инициализаторы и посмотрите, какой из них попал!