MKMapView - rendererForOverlay pas appelé
J'ai récemment commencé à apprendre objectiveC et a commencé le développement d'une application en iOS6.
Maintenant, je suis en train de le convertir pour iOS7 et face à des questions avec MKMap.
Dans iOS6, j'ai été en utilisant viewForOverlay.
Dans iOS7, je suis l'évolution à renderForOverlay. Mais, mon application n'est pas en appelant à mapView:rendererForOverlay. Ci-dessous mon code. Reconnaissant de votre aide.
- (void) drawPolyline:(NSArray *)locations
{
[mapView setDelegate:self];
...
...
self.polyline = [MKPolyline polylineWithCoordinates:locationCoordinate2DArray count:numberOfLocations];
free(locationCoordinate2DArray);
[mapView addOverlay:self.polyline];
[mapView setNeedsDisplay];
}
- (MKOverlayRenderer*)mapView:(MKMapView*)mapView rendererForOverlay:(id <MKOverlay>)overlay
{
MKPolylineRenderer* lineView = [[MKPolylineRenderer alloc] initWithPolyline:self.polyline];
lineView.strokeColor = [UIColor blueColor];
lineView.lineWidth = 7;
return lineView;
}
Quel est l'enjeu?
programme appelant ne pas mapView:rendererForOverlay
programme appelant ne pas mapView:rendererForOverlay
OriginalL'auteur user2734323 | 2013-09-20
Vous devez vous connecter pour publier un commentaire.
Je suis en supposant que vous avez déclarer la
MKMapViewDelegate
délégué dans votre fichier d'en-tête via le@interface
déclaration:Cependant, avez-vous attribuer le délégué de l'
viewDidLoad
(ou si vous pensez que c'est approprié) méthode?OriginalL'auteur Mike Petrogeorge
Comme d'autres l'ont dit, assurez-vous de configurer votre
delegate
avant de les ajouter. Utiliser leaddOverlay:level:
méthode depuisaddOverlay:
sera obsolète (selon le commentaire dans l'en-tête).Ma question était quelque chose de stupide. J'ai eu la lat et long mis par erreur pour mon polygone de points. Assurez-vous de vérifier que s'ils ne se montrent pas.
Vous pouvez aussi essayer de vous connecter
pointCount
sur votre polygone pour s'assurer qu'ils sont correctement réglés.Liées, c'est la façon de le faire dans Swift:
J'espère que cela vous permet d'économiser un peu de temps!
Omg! J'ai fait la même chose. Pouah il y va de 2 heures de ma vie. Merci pour votre aide.
OriginalL'auteur Sam Soffes
OK, j'ai eu le même problème et trouvé enfin le cas.
Nous devons utiliser
[MKMapView addOverlay: level:]
au lieu de[MKMapView addOverlay:]
.Il déclenche
rendererForOverlay
plutôt queviewForOverlay
du délégué.Espérons que cela serait utile pour vous iOS 7 amateurs!
OriginalL'auteur Pei
Si il y a un seul point dans
locationCoordinate2DArray,mapView:rendererForOverlay
ne serait pas appelé.OriginalL'auteur timothy
Je viens de terminer mes expériences avec cette méthode et j'ai trouvé que seulement plume-fichier placé MKMapView et
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
résolu ce problème. Ici aussi, est liste de contrôle.OriginalL'auteur Tony
Pour moi, la solution a consisté en deux étapes:
OriginalL'auteur Elise van Looij