He agregado un MKCircle como MKOverlay a mi MKMapView. También agregué un UISlider para decidir el radio del círculo. Desafortunadamente, al usar esto, parece un poco "lento", no es tan suave como quiero que sea.MKOverlay sin redimensionamiento sin problemas
Ejemplo: http://dl.dropbox.com/u/3077127/mkoverlayDelay.mov
Este es mi código:
- (void)addCircle
{
// draw the radius circle for the marker
double radius = 2000.0;
MKCircle *circle = [MKCircle circleWithCenterCoordinate:location radius:radius];
[circle setTitle:@"background"];
[mapView addOverlay:circle];
MKCircle *circleLine = [MKCircle circleWithCenterCoordinate:location radius:radius];
[circleLine setTitle:@"line"];
[mapView addOverlay:circleLine];
}
- (void)addCircleWithRadius:(double)radius
{
MKCircle *circle = [MKCircle circleWithCenterCoordinate:location radius:radius];
[circle setTitle:@"background"];
[mapView addOverlay:circle];
MKCircle *circleLine = [MKCircle circleWithCenterCoordinate:location radius:radius];
[circleLine setTitle:@"line"];
[mapView addOverlay:circleLine];
}
- (void)sliderChanged:(UISlider*)sender
{
[mapView removeOverlays:[mapView overlays]];
double radius = (sender.value * 100);
[self addCircleWithRadius:radius];
}
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay{
MKCircle *circle = overlay;
MKCircleView *circleView = [[[MKCircleView alloc] initWithCircle:overlay] autorelease];
if ([circle.title isEqualToString:@"background"])
{
circleView.fillColor = UIColorFromRGB(0x598DD3);
circleView.alpha = 0.25;
}
else
{
circleView.strokeColor = UIColorFromRGB(0x5C8AC7);
circleView.lineWidth = 2.0;
}
return circleView;
}
¿Alguien tiene alguna sugerencia sobre cómo puedo suavizar esto?
Saludos,
Paul Peelen
+1 para pregunta muy bien documentada. ¿Hay alguna necesidad de eliminar la superposición, por qué no simplemente actualizarlo? –
Gracias! No creo que haya ninguna necesidad ... ¿pero cómo puedo actualizar la superposición? –
No estoy seguro de que puedas? Siempre pensé que las superposiciones de MapKit eran inmutables, no puedes modificarlas una vez creadas. Esta respuesta sugiere lo mismo: http://stackoverflow.com/questions/3171572/how-to-update-mkpolyline-mkpolylineview – lxt