Uncenter MkMapView

voturi
0

Am încercat să vizualizarea „uncenter“ hartă și îndepărtați toate adnotările. Motivul pentru aceasta este faptul că mapView va fi utilizat de către diferite controlere vizualizare pentru a afișa diferite adnotări și locații. Ceea ce se întâmplă acum este că eu sunt, folosind metoda „elimina adnotările“ și le elimină, dar harta rămâne centrată pe loc și, prin urmare, atunci când adnotări noi vin, nu se mișcă. Există o modalitate de a reseta regiune și, dacă da, ce valoare resetez l. Am încercat zero, zero și o valoare calculată, dar „animație de bază“, spune ca toate sunt invalide. Cum pot obține că pentru a micșora și înapoi pe noile mele adnotări?

aici este un cod

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

Asta e Methos recentrare Sunt folosind

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

Această piesă „altceva“ așteaptă până când marmură albastră picături în recentrează apoi pe harta. Problema am cu acea parte este că, atunci când mă duc înapoi la View Controller anterior elimin toate notațiile, așa că atunci când am venit înapoi în locația utilizatorului (pentru un motiv oarecare) nu apare din nou. Cum pot obține acest lucru pentru a pop înapoi în?

Multumesc baieti avans

Întrebat 08/01/2010 la 13:03
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
0

Am prima parte, a făcut zoom din nou prin apelarea la doar o funcție am făcut că a seta regiunea până să fie peste SUA.

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

}

A doua parte încă mă derutează, cum pot obține acea locație să pop din nou?

Publicat 11/01/2010 la 10:24
sursa de către utilizator

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