Использование существующего сегментированного элемента управления для управления масштабированием mkmapkit - PullRequest
0 голосов
/ 11 февраля 2012

У меня есть сегментированный элемент управления, который управляет адресом и номером телефона, а также некоторыми другими метками на экране.

Я также пытаюсь получить этот же элемент управления для увеличения определенного местоположения в трех местах наmkmapview и сделайте уровень масштабирования при просмотре улиц в зависимости от того, какую кнопку они нажимают.Любая помощь будет оценена.

Вот мой файл .m:

    @implementation LocationInfoViewController;
@synthesize mapView;

-(void)viewDidLoad

{
    [super viewDidLoad];
    [mapView setMapType:MKMapTypeStandard];
    [mapView setZoomEnabled:YES];
    [mapView setScrollEnabled:YES];
    [mapView setDelegate:self];

    MKCoordinateRegion morristown = { {0.0, 0.0} , {0.0, 0.0} };
    morristown.center.latitude = 40.797011;
    morristown.center.longitude = -74.482855;
    morristown.span.longitudeDelta = 0.60f;
    morristown.span.latitudeDelta = 0.60f;
    [mapView setRegion:morristown animated:YES];

    Annotation *ann1 = [[Annotation alloc] init];
    ann1.title = @"Sushi Lounge";
    ann1.subtitle = @"Morristown";
    ann1.coordinate = morristown.center;
    [mapView addAnnotation: ann1];

    MKCoordinateRegion hoboken = { {0.0, 0.0} , {0.0, 0.0} };
    hoboken.center.latitude = 40.738496;
    hoboken.center.longitude = -74.029434;
    hoboken.span.longitudeDelta = 0.60f;
    hoboken.span.latitudeDelta = 0.60f;
    [mapView setRegion:hoboken animated:YES];

    Annotation *ann2 = [[Annotation alloc] init];
    ann2.title = @"Sushi Lounge";
    ann2.subtitle = @"Hoboken";
    ann2.coordinate = hoboken.center;
    [mapView addAnnotation:ann2];

    MKCoordinateRegion totawa = { {0.0, 0.0} , {0.0, 0.0} };
    totawa.center.latitude = 40.875682;
    totawa.center.longitude = -74.301787;
    totawa.span.longitudeDelta = 0.60f;
    totawa.span.latitudeDelta = 0.60f;
    [mapView setRegion:hoboken animated:YES];

    Annotation *ann3 = [[Annotation alloc] init];
    ann3.title = @"Sushi Lounge";
    ann3.subtitle = @"Totawa";
    ann3.coordinate = totawa.center;
    [mapView addAnnotation:ann3];

}

-(MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation 

{
    MKPinAnnotationView *MyPin=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"current"];
    MyPin.pinColor = MKPinAnnotationColorPurple;

    UIButton *advertButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    [advertButton addTarget:self action:@selector(button:) forControlEvents:UIControlEventTouchUpInside];

    MyPin.rightCalloutAccessoryView = advertButton;
    MyPin.draggable = NO;
    MyPin.highlighted = YES;
    MyPin.animatesDrop=TRUE;
    MyPin.canShowCallout = YES;

    return MyPin;
}

-(void)button:(id)sender {
    NSLog(@"Button action");
}


    //Start of Segment control
-(IBAction) changeSegment:(id)sender


{
   //streetLabel--------------------------------------------- 
    if(control.selectedSegmentIndex == 0) {
        streetLabel.text = @"12 Schuyler Place";
    }
    if(control.selectedSegmentIndex == 1) {
        streetLabel.text = @"200 Hudson St.";
    }

    if(control.selectedSegmentIndex == 2) {
        streetLabel.text = @"235 Route 46 West";
    }

    //phoneLabel---------------------------------------------

    if(control.selectedSegmentIndex == 0) {
        phoneLabel.text = @"(973) 539-1135";
    }
    if(control.selectedSegmentIndex == 1) {
        phoneLabel.text = @"(201) 386-1117";
    }

    if(control.selectedSegmentIndex == 2) {
        phoneLabel.text = @"(973) 890-0007";
    }
    //Monday----------------------------------------------
    if(control.selectedSegmentIndex == 0) {
        hoursLabel1.text = @"11:30am - 11:00pm";
    }
    if(control.selectedSegmentIndex == 1) {
        hoursLabel1.text = @"11:30pm - 11:30pm";
    }

    if(control.selectedSegmentIndex == 2) {
        hoursLabel1.text = @"11:30am - 10:30pm";
    }
    //Tuesday------------------------------------------
    if(control.selectedSegmentIndex == 0) {
        hoursLabel2.text = @"11:30am - 11:00pm";
    }
    if(control.selectedSegmentIndex == 1) {
        hoursLabel2.text = @"11:30am - 11:30pm";
    }
    if(control.selectedSegmentIndex == 2) {
        hoursLabel2.text = @"11:30am -  10:30pm";
    }
    //Wednesday------------------------------------------
    if(control.selectedSegmentIndex == 0) {
        hoursLabel3.text = @"11:30am - 11:30pm";
    }
    if(control.selectedSegmentIndex == 1) {
        hoursLabel3.text = @"11:30am - 11:30pm";
    }
    if(control.selectedSegmentIndex == 2) {
        hoursLabel3.text = @"11:30am -  12:00am";
    }
    //Thursday------------------------------------------
    if(control.selectedSegmentIndex == 0) {
        hoursLabel4.text = @"11:30am - 12:00am";
    }
    if(control.selectedSegmentIndex == 1) {
        hoursLabel4.text = @"11:30am - 12:00pm";
    }
    if(control.selectedSegmentIndex == 2) {
        hoursLabel4.text = @"11:30am -  11:30pm";
    }
    //Friday------------------------------------------
    if(control.selectedSegmentIndex == 0) {
        hoursLabel5.text = @"11:30am - 12:00pm";
    }
    if(control.selectedSegmentIndex == 1) {
        hoursLabel5.text = @"11:30am - 1:00am";
    }
    if(control.selectedSegmentIndex == 2) {
        hoursLabel5.text = @"11:30am -  12:00am";
    }
    //Saturday------------------------------------------
    if(control.selectedSegmentIndex == 0) {
        hoursLabel6.text = @"12:00pm - 12:00am";
    }
    if(control.selectedSegmentIndex == 1) {
        hoursLabel6.text = @"12:00pm - 1:00am";
    }
    if(control.selectedSegmentIndex == 2) {
        hoursLabel6.text = @"12:00pm -  12:00am";
    }
    //Sunday------------------------------------------
    if(control.selectedSegmentIndex == 0) {
        hoursLabel7.text = @"12:00pm - 11:00pm";
    }
    if(control.selectedSegmentIndex == 1) {
        hoursLabel7.text = @"12:00pm - 11:30pm";
    }
    if(control.selectedSegmentIndex == 2) {
        hoursLabel7.text = @"12:00pm - 10:30pm";
    }
    if (control.selectedSegmentIndex == 0) {
        mapView.center.x == 40.738496;


    }
}





- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView

{

}
- (void)viewDidUnload
{

    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

*/

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

Ответы [ 2 ]

0 голосов
/ 11 февраля 2012

Одно простое решение - сделать в аннотациях переменные ann1, ann2 и ann3 ivars вместо локальных переменных в viewDidLoad.

После этого вы сможете легко получить к ним доступ и изменить координаты карты в методе changeSegment::

if (control.selectedSegmentIndex == 0) {
    //set streetLabel, phoneLabel, and hoursLabelX here also
    [mapView setRegion:MKCoordinateRegionMakeWithDistance(ann1.coordinate, 1000, 1000) animated:YES];
}
else 
if (control.selectedSegmentIndex == 1) {
    //set streetLabel, phoneLabel, and hoursLabelX here also
    [mapView setRegion:MKCoordinateRegionMakeWithDistance(ann2.coordinate, 1000, 1000) animated:YES];
}
else
if (control.selectedSegmentIndex == 2) {
    //set streetLabel, phoneLabel, and hoursLabelX here also
    [mapView setRegion:MKCoordinateRegionMakeWithDistance(ann3.coordinate, 1000, 1000) animated:YES];
}

Кстати, вы можете значительно упростить и сократить код в changeSegment:, объединив все утверждения, которые относятся к одному и тому же условию, как указано в комментариях выше, а не по отдельности.

0 голосов
/ 11 февраля 2012

лучше просто больше читать, вот пример кода, который вы можете изучить:

MapCallouts

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...