Für die Art von Ring im Bild, brauchen Sie keine benutzerdefinierte Overlay zu erstellen.
Um einen Basisring zu zeichnen, fügen Sie einen einzelnen MKCircle
hinzu und für seinen MKCircleView
setzen Sie den lineWidth
basierend darauf, wie dick ein Ring sein soll.
//Create the MKCircle (could be in viewDidLoad)...
MKCircle *c = [MKCircle circleWithCenterCoordinate:
CLLocationCoordinate2DMake(someLat, someLong)
radius:2000];
[myMapView addOverlay:c];
//In viewForOverlay delegate method, return a MKCircleView...
-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay
{
if ([overlay isKindOfClass:[MKCircle class]])
{
MKCircleView *cv = [[MKCircleView alloc] initWithCircle:overlay];
cv.lineWidth = 15; // <-- controls thickness of ring
cv.strokeColor = [UIColor greenColor];
cv.alpha = 0.75;
return cv;
}
return nil;
}
Ist .lineWidth in Pixeln? – TimoP
Ich denke, es ist Punkte, aber im Wesentlichen ja. Es wird automatisch basierend auf der Zoomstufe skaliert. – Anna
Ok, danke. Ich brauche zum Beispiel eine Fläche von 10m Breite in 30m Entfernung zu einem Punkt auf der Karte. Ich versuche das. – TimoP