Dodałem MKCircle jako MKOverlay do mojego MKMapView. Dodałem również UISlider, aby zdecydować o promieniu koła. Niestety, podczas korzystania z tego wydaje się nieco "laggy", nie jest tak gładki jak chcę.MKOverlay nie zmienia rozmiaru płynnie
Przykład: http://dl.dropbox.com/u/3077127/mkoverlayDelay.mov
To jest mój kod:
- (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;
}
Czy ktoś ma jakieś sugestie, w jaki sposób mogę to wyg?
poważaniem,
Paul Peelen
+1 za dobrze udokumentowane pytanie. Czy istnieje potrzeba usunięcia nakładki, dlaczego nie po prostu ją zaktualizować? –
Dzięki! Nie sądzę, że jest taka potrzeba ... ale jak mogę zaktualizować nakładkę? –
Nie jestem pewien, czy potrafisz? Zawsze uważałem, że nakładki MapKit były niezmienne, nie można ich modyfikować po ich utworzeniu. Ta odpowiedź sugeruje to samo: http://stackoverflow.com/questions/3171572/how-to-update-mkpolyline-mkpolylineview – lxt