Uncenter MkMapView

voti
0

Sto cercando di vista uncenter mappa e rimuovere tutte le annotazioni. La ragione di questo è che il mapview verrà utilizzato da diversi controllori di visualizzazione per visualizzare diverse annotazioni e posizioni. Quello che sta succedendo ora è che io sto usando il metodo rimuovere le annotazioni e io rimuove loro, ma la mappa rimane centrata sul posto e, quindi, quando le nuove annotazioni entrare, ma non si muove. C'è un modo per ripristinare la regione e, in caso affermativo, quale valore si ripristina a. Ho provato a zero, zero e un valore calcolato, ma l'animazione core dice che sono tutti validi. Come faccio ad avere che per diminuire e schienale in sulle mie nuove annotazioni?

qui è un codice

-(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];
}

Ecco i methos recenter sto usando

- (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;
}

Questo pezzo altro aspetta fino a quando scende il marmo blu in poi ricentrata mappa. Il problema che ho con quella parte è che quando tornerò al precedente controller Visualizza i Togliere tutte le annotazioni, così quando torno nella posizione d'uso (per qualche motivo) non pop torna in. Come faccio ad avere questo al pop indietro nel?

grazie in anticipo ragazzi

È pubblicato 08/01/2010 alle 13:03
fonte dall'utente
In altre lingue...                            


1 risposte

voti
0

Ha ottenuto la prima parte, ha fatto diminuire di nuovo da solo chiamare una funzione che ho fatto impostare la regione per essere gli Stati Uniti.

-(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];

}

La seconda parte mi sconcerta ancora, come faccio a ottenere quella posizione al pop di nuovo?

Risposto il 11/01/2010 a 10:24
fonte dall'utente

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