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
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);
Bir şekilde bir işaretleme açıklama va...
Görüntü otomatik div konteyner sığacak...
uilabel metin etiketi sığacak şekilde ...
Python Kapsayan Kurallar kısa Açıklama...
Bir şekilde ellipsize=&; marquee" ...