Uncenter MkMapView

ψήφοι
0

Προσπαθώ να «uncenter» το τμήμα του χάρτη και να αφαιρέσετε όλα τα σχόλια. Ο λόγος για αυτό είναι ότι η MapView θα πρέπει να χρησιμοποιούνται από διαφορετικούς ελεγκτές, προκειμένου να εμφανίσει διαφορετικές σημειώσεις και τοποθεσίες. Αυτό που συμβαίνει τώρα είναι ότι είμαι με τη μέθοδο της «αφαιρέσει σχόλια» και εγώ να τους απομακρύνει, αλλά ο χάρτης παραμένει επικεντρωμένη επί τόπου και έτσι όταν τα νέα σχόλια έρχονται σε, δεν κινείται. Είναι ένας τρόπος για να επαναφέρετε την περιοχή και αν ναι, τι σχέση μπορώ να επαναφέρετε εκεί. Προσπάθησα μηδέν, μηδέν και κάποιοι υπολογιζόμενη τιμή, αλλά «πυρήνα κινουμένων σχεδίων» λέει ότι είναι όλα άκυρα. Πώς μπορώ να πάρω ότι σε σμίκρυνση και πίσω μέσα σε νέα σχολιασμούς μου;

Εδώ είναι μερικά κωδικό

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

Αυτό είναι το methos κεντράρετε είμαι με τη χρήση

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

Αυτό το «άλλο» κομμάτι περιμένει έως ότου η μπλε μάρμαρο πέφτει στην συνέχεια recenters το χάρτη. Το πρόβλημα που έχω με αυτό το μέρος είναι ότι όταν πάω πίσω στην προηγούμενη View Controller μπορώ να αφαιρέσω όλα τα σχόλια, έτσι ώστε όταν θα επανέλθει στη θέση του χρήστη (για κάποιο λόγο) δεν εμφανιστεί ξανά. Πώς μπορώ να πάρω αυτό για να σκάσει πίσω στο?

ευχαριστώ εκ των προτέρων παιδιά

Δημοσιεύθηκε 08/01/2010 στις 13:03
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
0

Πήρε το πρώτο μέρος, έκανε σμίκρυνση και πάλι με ένα απλό τηλεφώνημα σε λειτουργία έκανα που καθορίζουν την περιοχή μέχρι να είναι πάνω από τις ΗΠΑ.

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

}

Το δεύτερο μέρος εξακολουθεί να μου διαφράγματα, πώς μπορώ να πάρω ότι θέση να σκάσει ξανά;

Απαντήθηκε 11/01/2010 στις 10:24
πηγή χρήστη

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