Harita bölgesini, tüm pin-ek açıklamaları aynı anda gösterecek şekilde ayarlamanızı öneriyorum (orta ve açık).iPhone MKMapView: Haritadaki tüm iğneler göstermek için haritayı göster
Uzun/lat koordinatlarını NSString'den double, resp. Onlarla hesaplamalar yapmak.
- (void)updateMemberPins{
//calculate new region to show on map
double center_long = 0.0f;
double center_lat = 0.0f;
double max_long = 0.0f;
double min_long = 0.0f;
double max_lat = 0.0f;
double min_lat = 0.0f;
for (Member *member in members) {
//find min and max values
if ([member.locLat doubleValue] > max_lat) {max_lat = [member.locLat doubleValue];}
if ([member.locLat doubleValue] < min_lat) {min_lat = [member.locLat doubleValue];}
if ([member.locLong doubleValue] > max_long) {max_long = [member.locLong doubleValue];}
if ([member.locLong doubleValue] < min_long) {min_long = [member.locLong doubleValue];}
//sum up long and lang to get average later
center_lat = center_lat + [member.locLat doubleValue];
center_long = center_long + [member.locLong doubleValue];
}
//calculate average long/lat
center_lat = center_lat/[members count];
center_long = center_long/[members count];
NSLog(@"center long: %d, center lat: %d", center_long, center_lat);
NSLog(@"max_long: %d, min_long: %d, max_lat: %d, min_lat: %d", max_long, min_long, max_lat, min_lat);
//create new region and set map
CLLocationCoordinate2D coord = {latitude: center_lat, longitude: center_long};
MKCoordinateSpan span = MKCoordinateSpanMake(abs(max_lat) + abs(min_lat), abs(max_long) + abs(min_long));
MKCoordinateRegion region = {coord, span};
[resultMapView setRegion:region];
//remove all pins from map
[resultMapView removeAnnotations:resultMapView.annotations];
//show member pins
for (id member in members) {
[resultMapView addAnnotation:(Member *) member];
}
}
log-çıkış sonucu olduğunu:
merkezi uzun: İşte kullanıyorum kodudur -1946827116, merkez lat: 1075651472
max_long: -6267216, min_long: 1076018553, max_lat: 0, min_lat: 0
Ben incelerim Bu problem, (yanlış) NSString'den double'a değerleri dönüştürmekten geliyor, ancak çalışmasını sağlamanın bir yolunu bulamıyorum ... Konum dizelerinin biçimi '43 .5686473 'gibidir.
Herhangi bir ipucu? Cheerz
min max lat lon için başlangıç değerleriniz yanlış. Şunları deneyin: double max_long = -360.0f; çift min_long = 360.0f; çift max_lat = -360.0f; çift min_lat = 360.0f; – igrek
ve açıklık hesaplamaları? neden onları ekleyin? Ve aynı zamanda abs çift int döndürmez yani fabs olmalıdır: MKCoordinateSpan span = MKCoordinateSpanMake (fabs (max_lat - min_lat), fabs (max_long - min_long)); – igrek
Yine de teşekkürler, +1 biraz zaman – igrek