Uncenter MKMapView

stemmen
0

Ik ben op zoek naar uncenter de kaartweergave en verwijder alle annotaties. de reden hiervoor is dat de Mapview zal worden gebruikt door verschillende weergave controllers verschillende aantekeningen en locaties weergeven. Wat er nu gebeurt is dat ik ben met behulp van de verwijderen annotaties methode en ik verwijdert ze, maar de kaart gecentreerd blijft op de plek en dus wanneer de nieuwe annotaties komen, is het niet bewegen. Is er een manier om het gebied opnieuw in te stellen en zo ja, welke waarde moet ik resetten om. Ik probeerde nul, nul en een aantal berekende waarde, maar de kern animatie, zegt ze zijn allemaal ongeldig. hoe krijg ik die om uit te zoomen en terug in op mijn nieuwe annotaties?

Hier is een stukje 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];
}

Dat is het recenter methos ik gebruik

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

Deze else stuk wacht tot de blauwe knikker druppels in dan recenters de kaart. Het probleem dat ik heb met dat deel is dat wanneer ik terug naar de vorige View Controller verwijder ik alle aantekeningen, dus toen ik terug te komen in de User locatie (om wat voor reden) komt niet terug in de pop. Hoe krijg ik dit te knallen terug in?

dank bij voorbaat guys

De vraag is gesteld op 08/01/2010 om 13:03
bron van user
In andere talen...                            


1 antwoorden

stemmen
0

Heb je het eerste deel, maakte het uit te zoomen weer door gewoon te bellen naar een functie die ik heb gemaakt dat de regio opgezet om meer dan de Verenigde Staten.

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

}

Het tweede deel nog steeds verbijstert me, hoe krijg ik die locatie weer pop in?

antwoordde op 11/01/2010 om 10:24
bron van user

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