¿Reemplazar el pin del icono por la label del text en la anotación?

¿Es posible replace el icono de pin de una anotación por una label de text dynamic?

¿Quizás usando css o creando dinámicamente una image?

Por ejemplo, una label se hace con CSS en Google Maps API con JavaScript.

Si es posible.

En iOS MapKit, necesitará implementar el método de delegado viewForAnnotation y devolver un MKAnnotationView con un UILabel agregado.

Por ejemplo:

 -(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation { if ([annotation isKindOfClass:[MKUserLocation class]]) return nil; static NSString *reuseId = @"reuseid"; MKAnnotationView *av = [mapView dequeueReusableAnnotationViewWithIdentifier:reuseId]; if (av == nil) { av = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseId] autorelease]; UILabel *lbl = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 30)] autorelease]; lbl.backgroundColor = [UIColor blackColor]; lbl.textColor = [UIColor whiteColor]; lbl.alpha = 0.5; lbl.tag = 42; [av addSubview:lbl]; //Following lets the callout still work if you tap on the label... av.canShowCallout = YES; av.frame = lbl.frame; } else { av.annotation = annotation; } UILabel *lbl = (UILabel *)[av viewWithTag:42]; lbl.text = annotation.title; return av; } 

Asegúrese de que la propiedad del delegate la vista del map esté configurada, de lo contrario, este método de delegado no se llamará y, en su lugar, obtendrá los pines rojos pnetworkingeterminados.

Aquí hay una variación de Swift 3 del método de delegado mencionado en el comentario de Anna arriba. Asegúrese de que su class se ajuste a MKMapViewDelegate y que el delegado de mapView esté configurado como self en viewDidLoad ().

 func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { if annotation is MKUserLocation { return nil } let reuseId = "reuseid" var av = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId) if av == nil { av = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId) let lbl = UILabel(frame: CGRect(x: 0, y: 0, width: 50, height: 30)) lbl.backgroundColor = .black lbl.textColor = .white lbl.alpha = 0.5 lbl.tag = 42 av?.addSubview(lbl) av?.canShowCallout = true av?.frame = lbl.frame } else { av?.annotation = annotation } let lbl = av?.viewWithTag(42) as! UILabel lbl.text = annotation.title! return av }