मैं नक्शा क्षेत्र (केंद्र और अवधि) सेट करने की कोशिश कर रहा हूं ताकि नक्शा एक ही समय में सभी पिन-एनोटेशन दिखाए।आईफोन एमकेमैप व्यू: मानचित्र पर सभी पिन दिखाने के लिए मानचित्र क्षेत्र सेट करें
मुझे एनएसएसटींग से डबल, रेस तक लंबे/लेट निर्देशांक को परिवर्तित करने में समस्या हो रही है। उनके साथ गणना करें।
- (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];
}
}
लॉग-उत्पादन का परिणाम है::
केंद्र लंबे: यहाँ कोड मैं का उपयोग कर रहा है -+१९४६८२७११६, केन्द्र अक्षांश: 1075651472
max_long: -6267216, min_long: 1076018553, max_lat: 0, min_lat: 0
मैं पतला k समस्या (गलत तरीके से) NSString से डबल तक मूल्यों को परिवर्तित करने से आती है, हालांकि मुझे इसे काम करने का कोई तरीका नहीं मिल रहा है ... स्थान-स्ट्रिंग का प्रारूप '43 .5686473 'जैसा है।
कोई संकेत? Cheerz
न्यूनतम अधिकतम लेट लोन के लिए आपके प्रारंभ मूल्य गलत हैं। इन्हें आजमाएं: डबल max_long = -360.0f; डबल min_long = 360.0f; डबल max_lat = -360.0f; डबल min_lat = 360.0f; – igrek
और अवधि गणना? उन्हें क्यों जोड़ें? और यह भी पेट वापस int नहीं देता है इसलिए fabs होना चाहिए: MKCoordinateSpan span = MKCoordinateSpanMake (fabs (max_lat - min_lat), fabs (max_long - min_long)); – igrek
वैसे भी धन्यवाद, +1 ने मुझे कुछ समय बचाया – igrek