Uncenter MkMapView

oy
0

Ben uncenter harita görünümü çalışıyor ve tüm ek açıklamaları kaldırmak duyuyorum. Bunun nedeni MapView farklı açıklamaları ve yerleri görüntülemek için farklı bakış denetleyicileri tarafından kullanılacak olmasıdır. Şimdi ne oluyor i ek açıklamaları kaldırmak yöntemini kullanıyorum ve onları kaldırır, ancak harita yerinde merkezli kalır ve yeni ek açıklamalar geldiklerinde dolayısıyla hareket etmiyor olmasıdır. Bölgeyi sıfırlamak ve eğer öyleyse, ne değer ben sıfırlamak için bir yolu var mı. Ben nil, sıfır denenmiş ve bazı hesaplanan değer ama çekirdek animasyon hepsi geçersiz olduğunu söylüyor. nasıl ben bu uzaklaştırma ve benim yeni ek açıklamaları üzerine geri alabilirim?

Burada bazı koddur

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

Yakınlaştır metodlarını Thats i kullanıyorum

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

mavi mermer ardından haritayı recenters içinde düşene kadar bu başka bir parça bekler. Ben o kısmı ile sorunumuz i önceki View Controller için geri döndüğünüzde ı tüm ek açıklamaları kaldırmak, bu yüzden geri pop vermez (nedense) Kullanıcı konumda geri geldiğinde. Bunu nasıl pop alırım olmasıdır geri?

peşin adamlar teşekkürler

Oluştur 08/01/2010 saat 13:03
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
0

Sadece ABD'de bitecek bölgeyi kurmak i yapılmış bir işlevi çağırarak tekrar uzaklaştırmak yapılan ilk bölümünü var.

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

}

İkinci bölüm hala nasıl konumu tekrar pop olduğunu alırım, beni kelimeler?

Cevap 11/01/2010 saat 10:24
kaynak kullanıcı

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