una ronald romualfons romualdfons romu que posicionar posicionamiento home google description curso como iphone ios mapkit

iphone - romualfons - ronald seo



¿Reemplazar el icono del pin por la etiqueta de texto en la anotación? (2)

¿Es posible reemplazar el icono del pin de una anotación por una etiqueta de texto dinámico?

¿Tal vez usando css, o creando dinámicamente una imagen?

Por ejemplo, una etiqueta se realiza con CSS en la API de Google Maps con JavaScript.


Aquí hay una variación Swift 3 del método de delegado mencionado en el comentario de Anna anterior. Asegúrese de que su clase se ajuste a MKMapViewDelegate y que el delegado de mapView esté configurado en 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 }


Si es posible.

En iOS MapKit, deberá implementar el método del 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 delegate la vista de mapa esté configurada, de lo contrario, no se llamará a este método de delegado y obtendrá los pasadores rojos predeterminados.