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

  • finalcall07

    finalcall07

    11 NİSAN 2008
  • Joshua Benedict

    Joshua Bened

    26 EKİM 2013
  • Tips On Linux

    Tips On Linu

    26 Temmuz 2008