SORU
13 Ocak 2011, PERŞEMBE


Açıklama iğne sığacak şekilde yakınlaştırma MKMapView?

Ve 5-10 kilometrelik bir alanı hakkında harita pim açıklama bir dizi eklemiş MKMapView kullanıyorum. Benim göster bütün dünyaya göstermek için Yakınlaştırılmış başlar uygulama çalıştırdığınızda, harita pimleri zoom için en iyi yolu görünümü fit nedir?

DÜZENLEME: Benim ilk düşünce MKCoordinateRegionMake kullanın ve koordine merkezi, benim notlar gelen longitudeDelta ve latitudeDelta hesaplamak olacaktır. Bu iş oldukça eminim, ama ben sadece belirgin bir şey eksik değildi emin olmak istedim.

Kod, BTW ekledi: FGLocation bu nesnelerin NSMutableArray bir locationFake MKAnnotation, uygun bir sınıf. Yorumlarınızı her zaman bekleriz ....

- (MKCoordinateRegion)regionFromLocations {
    CLLocationCoordinate2D upper = [[locationFake objectAtIndex:0] coordinate];
    CLLocationCoordinate2D lower = [[locationFake objectAtIndex:0] coordinate];

    // FIND LIMITS
    for(FGLocation *eachLocation in locationFake) {
        if([eachLocation coordinate].latitude > upper.latitude) upper.latitude = [eachLocation coordinate].latitude;
        if([eachLocation coordinate].latitude < lower.latitude) lower.latitude = [eachLocation coordinate].latitude;
        if([eachLocation coordinate].longitude > upper.longitude) upper.longitude = [eachLocation coordinate].longitude;
        if([eachLocation coordinate].longitude < lower.longitude) lower.longitude = [eachLocation coordinate].longitude;
    }

    // FIND REGION
    MKCoordinateSpan locationSpan;
    locationSpan.latitudeDelta = upper.latitude - lower.latitude;
    locationSpan.longitudeDelta = upper.longitude - lower.longitude;
    CLLocationCoordinate2D locationCenter;
    locationCenter.latitude = (upper.latitude   lower.latitude) / 2;
    locationCenter.longitude = (upper.longitude   lower.longitude) / 2;

    MKCoordinateRegion region = MKCoordinateRegionMake(locationCenter, locationSpan);
    return region;
}

CEVAP
21 AĞUSTOS 2011, Pazar


Bu benim için çalıştı here bulmuşumdur

(EDİT: çözüm @Micah 0.1 ile pointRect rect sağlamak için artırmak için öneri zamanlar bitmiyor kullanarak küçük!) güncelledik

MKMapRect zoomRect = MKMapRectNull;
for (id <MKAnnotation> annotation in mapView.annotations)
{
    MKMapPoint annotationPoint = MKMapPointForCoordinate(annotation.coordinate);
    MKMapRect pointRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.1, 0.1);
    zoomRect = MKMapRectUnion(zoomRect, pointRect);
}
[mapView setVisibleMapRect:zoomRect animated:YES];

Ayrıca bu ilk satırı değiştirerek userLocation pin eklemek için güncelleme olabilir:

MKMapPoint annotationPoint = MKMapPointForCoordinate(mapView.userLocation.coordinate);
MKMapRect zoomRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.1, 0.1);

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • backyardjay

    backyardjay

    8 ŞUBAT 2009
  • Christopher Bill

    Christopher

    30 NİSAN 2009
  • Watcher3223

    Watcher3223

    15 Kasım 2007