Как увеличить и уменьшить MKCircle в MKMapView одним нажатием кнопки в IOS?
Я создаю приложение MKMapView, в котором я хочу предоставить пользователю возможность масштабирования MKCircle глубоко внутри, чтобы увидеть аннотации, и в то же время, если пользователь хочет вернуться к предыдущему уровню масштабирования, чтобы увидеть круг, ему просто нужно нажать та же кнопка. Я не понимаю, как переключаться между уровнями масштабирования?
// в приведенном ниже коде я вычислил радиус mkcircle, прежде чем поместить его в mkmapview
- (IBAction)adjustCircle:(id)sender{
long radius=[self calculateRadius];
NSLog(@"draw circle of radius=%ld",radius);
//int meter = 1000;
MKCircle *circle= [[MKCircle alloc]init];
circle = [MKCircle circleWithCenterCoordinate:CLLocationCoordinate2DMake([groupLat floatValue], [groupLon floatValue]) radius:radius];
[myMapView addOverlay:circle];
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(CLLocationCoordinate2DMake([groupLat floatValue], [groupLon floatValue]), 500, 500);
region.span.latitudeDelta =[self getZoomLevel:circle];
region.span.longitudeDelta =[self getZoomLevel:circle];
[myMapView setRegion:region animated:YES];
-(int) getZoomLevel:(MKCircle*) circle {
zoomLevel = 11;
if(isShowLocPoints == YES){
return 20;
}
if (circle != nil) {
double radius = [circle radius] + [circle radius] / 2;
double scale = radius / 500;
zoomLevel=(16 - log(scale) / log(2));
}
NSLog(@"zoom level=%d",zoomLevel);
return zoomLevel;
Спасибо
1 ответ
Вы можете задать значение BOOL, чтобы пометить его как увеличенное, когда представление действительно загружалось, когда пользователь впервые нажимает кнопку, увеличивает или уменьшает масштаб, изменяет значение BOOL, при повторном нажатии кнопки проверяет значение BOOL, если оно истинно, увеличивает масштаб; если ложь, уменьшите.