Uncenter MkMapView

stemmer
0

Jeg prøver å uncenter kartvisningen og fjerne alle merknader. Grunnen til dette er at mapView vil bli brukt av forskjellige visnings kontrollere for å vise ulike merknader og steder. Det som skjer nå er at jeg bruker fjerne merknader metoden, og jeg fjerner dem, men kartet forblir sentrert på stedet og dermed når nye kommentarer kommer inn, betyr det ikke beveger seg. Er det en måte å nullstille regionen og i så fall, hva verdien gjør null jeg det til. Jeg prøvde null, null og noen beregnet verdi, men core animasjon, sier de er ugyldige. hvordan får jeg det til å zoome ut og tilbake i på mine nye kommentarer?

her er noen kode

-(void)recenterMap {

NSArray *coordinates = [_mapView valueForKeyPath:@annotations.coordinate];
CLLocationCoordinate2D maxCoord = {-90.0f, -180.0f};
CLLocationCoordinate2D minCoord = {90.0f, 180.0f};

//NSLog(@%@, [coordinates description]);

for (NSValue *value in coordinates) {
    CLLocationCoordinate2D coord = {0.0f, 0.0f};
    [value getValue: &coord];

    if(coord.longitude > maxCoord.longitude) {
        maxCoord.longitude = coord.longitude;
    }

    if(coord.latitude > maxCoord.latitude){

        maxCoord.latitude = coord.latitude;
    }

    if(coord.longitude < minCoord.longitude){
        minCoord.longitude = coord.longitude;
    }

    if(coord.latitude < minCoord.latitude){
        minCoord.latitude = coord.latitude;
    }
}


MKCoordinateRegion region = {{0.0f, 0.0f}, {0.0f, 0.0f}};
region.center.longitude = (minCoord.longitude + maxCoord.longitude) / 2.0;
region.center.latitude = (minCoord.latitude + maxCoord.latitude) / 2.0;
region.span.longitudeDelta = maxCoord.longitude - minCoord.longitude;
region.span.latitudeDelta = maxCoord.latitude - minCoord.latitude;


[_mapView setRegion: region animated: YES];
}

Dvs de sentrere methos jeg bruker

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

MKAnnotationView *view = nil;
if(annotation != mapView.userLocation){

    Annotation *schoolAnn = (Annotation*)annotation;
    view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@schoolLoc];
    if(nil == view){
        view = [[[MKPinAnnotationView alloc] initWithAnnotation:schoolAnn     reuseIdentifier:@schoolLoc]autorelease];
    }

    [(MKPinAnnotationView *)view setAnimatesDrop:YES];
    [view setCanShowCallout:YES];

}
else { 
    [self recenterMap];
}

return view;
}

Denne andre del venter til den blå marmor faller i så recenters kartet. Problemet jeg har med det er at når jeg går tilbake til forrige View Controller jeg fjerne alle kommentarer, så når jeg kommer tilbake i Bruker sted (for noen grunn) ikke pop tilbake i. Hvordan får jeg dette til pop tilbake i?

takk på forhånd folkens

Publisert på 08/01/2010 klokken 12:03
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Fikk den første delen, gjorde det zoome ut igjen ved å bare kalle en funksjon jeg gjorde som setter regionen opp til å være over hele USA.

-(void)unCenterMap{

MKCoordinateRegion region2 = {{0.0f, 0.0f}, {0.0f, 0.0f}};
region2.center.longitude = (-98.151855); //coordinate for approximately the center of the US
region2.center.latitude = 39.402244;
region2.span.longitudeDelta = 3.0;
region2.span.latitudeDelta = 3.0;


[_mapView setRegion: region2 animated: YES];

}

Den andre delen fortsatt klaff meg, hvordan får jeg det stedet å sette inn igjen?

Svarte 11/01/2010 kl. 09:24
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more