Добавив несколько кружков вокруг булавки в iOS
Как добавить и отобразить несколько кругов разных цветов внутри карты (MKMapView
)? Я понял, как добавить один круг, но не могу понять, как добавить несколько кругов разных размеров и цветов... любая помощь будет принята с благодарностью!
1 ответ
Вот некоторый код, который я использую, чтобы нарисовать два концентрических круга в заданном месте на карте. Внешний серый, а внутренний белый. (в моем примере "диапазон" - это радиус окружности) Оба имеют некоторую прозрачность:
- (void)drawRangeRings: (CLLocationCoordinate2D) where {
// first, I clear out any previous overlays:
[mapView removeOverlays: [mapView overlays]];
float range = [self.rangeCalc currentRange] / MILES_PER_METER;
MKCircle* outerCircle = [MKCircle circleWithCenterCoordinate: where radius: range];
outerCircle.title = @"Stretch Range";
MKCircle* innerCircle = [MKCircle circleWithCenterCoordinate: where radius: (range / 1.425f)];
innerCircle.title = @"Safe Range";
[mapView addOverlay: outerCircle];
[mapView addOverlay: innerCircle];
}
Затем убедитесь, что ваш класс реализует MKMapViewDelegate
протокол и определите, как ваши оверлеи выглядят следующим образом:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
MKCircle* circle = overlay;
MKCircleView* circleView = [[MKCircleView alloc] initWithCircle: circle];
if ([circle.title compare: @"Safe Range"] == NSOrderedSame) {
circleView.fillColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.25];
circleView.strokeColor = [UIColor whiteColor];
} else {
circleView.fillColor = [UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:0.25];
circleView.strokeColor = [UIColor grayColor];
}
circleView.lineWidth = 2.0;
return circleView;
}
И, конечно же, не забудьте установить делегата на ваш MKMapView
объект, или вышеупомянутый метод никогда не будет вызван:
mapView.delegate = self;