2011-06-08 11 views
6

Tengo algunas MKOverlays (en realidad son MKPolygons) que se cargan tan pronto como aparece el mapa. Me gustaría cambiar su color de forma dinámica. La única forma que puedo ver de hacer esto es eliminar la superposición y luego volver a agregarla con el nuevo color. ¿Hay una mejor manera de hacer esto en la superposición existente?Cambiar el color de una MKOverlay que ya se ha agregado a una vista de mapa

yo soy nuevo en Objective-C/Xcode/ios ... así que por favor ser suave :)

Respuesta

4

Es importante recordar que gran parte de MapKit tiene diferentes objetos (MKPolygon, MKCircle, MKShape) para sujetar los datos relacionados con el dibujo de una vista (MKPolygonView, MKCircleView, MKOverlayView, etc.) En muchos casos, desea obtener una referencia al objeto de vista para poder establecer el color de fondo. es decir

MKOverlayView *anOverlay; //You need to set this view to the object you are interested in 
anOverlay.backgroundColor = [UIColor redColor]; 
[anOverlay setNeedsDisplay]; 

Si el objeto es un MKPolygon, debe determinar la MKPolygonView que se está elaborando en una continuación, establezca la propiedad fillColor y volver a dibujar el objeto llamando setNeedsDisplay:

MKPolygonView *theView; 
theView.fillColor = [UIColor redColor]; 
[theView setNeedsDisplay]; 
+0

Eso funcionó muy bien! Gracias Chip! y estad atentos porque tengo un montón de preguntas sobre nodos ios en el futuro :) – AdamBT

0

Su MAPview tiene una método para obtener el objeto procesador para una superposición determinada. Puede usar el renderizador para cambiar el color de su superposición.

if let renderer = mapView.rendererForOverlay(overlay) as? MKPolygonRenderer { 
    renderer.fillColor = UIColor.redColor() 
} 

dejar de lado el elenco opcional a MKPolygonRenderer si usted no está buscando una superposición MKPolygon.

(Comprendo que esto es una pregunta bastante antiguo, pero me tropecé a través de ella y encontré mi solución)

Cuestiones relacionadas