Uncenter MKMapView

stimmen
0

Ich versuche, die Kartenansicht auf „uncenter“ und alle Anmerkungen entfernen. der Grund dafür ist, dass die mapView wird von verschiedenem View-Controller verwendet werden, um verschiedene Anmerkungen und Positionen angezeigt werden soll. Was jetzt passiert, ist, dass ich die „entfernen Anmerkungen“ Methode benutzen, und ich entferne sie, aber die Karte bleibt an Ort und Stelle zentriert und damit, wenn die neuen Anmerkungen in kommen, ist es nicht zu bewegen. Gibt es eine Möglichkeit, die Region und wenn dies der Fall zurückgesetzt, welchen Wert setze ich es. Ich habe versucht, Null, Null, und einige berechnete Wert, sondern „Core Animation“, sagt sie alle ungültig sind. Wie bekomme ich das verkleinern und in auf meine neue Anmerkung zurück?

hier ist ein Code

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

Das ist die recenter methos ich verwende

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

Dieses „else“ Stück wartet, bis der blaue Marmor fällt in dann die Karte rezentriert. Das Problem, das ich mit dem Teil ist, dass, wenn ich zum vorherigen View-Controller zurück i alle Anmerkungen entfernen, so dass, wenn ich in dem User-Standort zurückkommen (aus irgendeinem Grunde) Pop nicht zurück in. Wie bekomme ich das Pop zurück in?

Vielen Dank im Voraus Jungs

Veröffentlicht am 08/01/2010 um 13:03
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Haben Sie den ersten Teil, es wieder gemacht verkleinern, indem nur eine Funktion aufrufen, den ich machte, dass die Region aufgebaut über den USA zu sein.

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

}

Der zweite Teil Leitbleche mich immer noch, wie bekomme ich die Lage wieder in Pop?

Beantwortet am 11/01/2010 um 10:24
quelle vom benutzer

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