SORU
26 AĞUSTOS 2009, ÇARŞAMBA


Konumlandırma birden fazla işaret aynı anda göstermek için MKMapView

Benim MKMapView (0-n öğeler n genellikle 5 civarında olduğu, olabilir) eklemek istediğim bazı notlar var. Ek açıklamalar iyi ekleyebilirim, ama tüm açıklamalar ekranda aynı anda sığdırmak için Haritayı yeniden boyutlandırmak istiyorum, ve bunu yapmak için nasıl emin değilim.

-regionThatFits: bakıyordum ama tam olarak ne olduğundan emin değilim. Şimdiye kadar var ne göstermek için bazı kod göndeririz. Bu genellikle basit bir görev olması gerektiğini düşünüyorum ama biraz şimdiye kadar MapKit ile bunalmış hissediyorum.

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{

location = newLocation.coordinate;
//One location is obtained.. just zoom to that location

MKCoordinateRegion region;
region.center = location;

//Set Zoom level using Span
MKCoordinateSpan span;
span.latitudeDelta = 0.015;
span.longitudeDelta = 0.015;
region.span = span;
// Set the region here... but I want this to be a dynamic size
// Obviously this should be set after I've added my annotations
[mapView setRegion:region animated:YES];

// Test data, using these as annotations for now
NSArray *arr = [NSArray arrayWithObjects:@"one", @"two", @"three", @"four", nil];
float ex = 0.01;
for (NSString *s in arr) {
    JBAnnotation *placemark = [[JBAnnotation alloc] initWithLat:(location.latitude   ex) lon:location.longitude];
	[mapView addAnnotation:placemark];
	ex = ex   0.005;
}
    // What do I do here?
    [mapView setRegion:[mapView regionThatFits:region] animated:YES];
}

Dikkat edin, bu konum bir güncelleme almak gibi olur... eğer bunu yapmak için uygun bir yer bilmiyorum. Nerede daha iyi bir yer olurdu? -viewDidLoad?

Şimdiden teşekkürler.

CEVAP
8 AĞUSTOS 2012, ÇARŞAMBA


Neden bu kadar karmaşık?

MKCoordinateRegion coordinateRegionForCoordinates(CLLocationCoordinate2D *coords, NSUInteger coordCount) {
    MKMapRect r = MKMapRectNull;
    for (NSUInteger i=0; i < coordCount;   i) {
        MKMapPoint p = MKMapPointForCoordinate(coords[i]);
        r = MKMapRectUnion(r, MKMapRectMake(p.x, p.y, 0, 0));
    }
    return MKCoordinateRegionForMapRect(r);
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CHISTOSITOJAJA

    CHISTOSITOJA

    27 HAZİRAN 2010
  • Lamarr Wilson

    Lamarr Wilso

    27 Aralık 2008
  • Vsauce

    Vsauce

    30 Temmuz 2007