在地图视图中显示多个注释
我是新来映射视图在iOS SDK。 我想在地图视图中使用经纬度显示多个注释。基本上所有经纬度都是从服务器端以json格式来的。 我parsing所有经纬度,并将其保存在不同的数组中。 但是如何一次性显示所有注释。 我能够一次只显示一个注释。下面是我正在使用的单个注释的代码,
zoomLocation.latitude = latmpa.doubleValue; zoomLocation.longitude = logmpa.doubleValue; annotationPoint = [[MKPointAnnotation alloc] init]; annotationPoint.coordinate = zoomLocation; annotationPoint.title = @"masjid...."; [mapView selectAnnotation:annotationPoint animated:YES]; [mapView addAnnotation:annotationPoint]; mapView.centerCoordinate = annotationPoint.coordinate; MKCoordinateSpan span; span.latitudeDelta = 1.5; span.longitudeDelta = 1.0; MKCoordinateRegion newRegion; newRegion.center = zoomLocation; newRegion.span = span; [mapView setRegion:newRegion animated:YES];
尝试这个
for ( int i=0; i<[yourLatLongarray count]; i++) { CLLocationCoordinate2D coord; coord.latitude=[[NSString stringWithFormat:@"%@",[yourLatitudeArray objectAtIndex:i]] floatValue]; coord.longitude=[[NSString stringWithFormat:@"%@", [yourLongitudeArray objectAtIndex:i]] floatValue]; MKCoordinateRegion region1; region1.center=coord; region1.span.longitudeDelta=20 ; region1.span.latitudeDelta=20; [mapview setRegion:region1 animated:YES]; NSString *titleStr =[namesArr objectAtIndex:i] ; // NSLog(@"title is:%@",titleStr); MyAnnotation* annotObj =[[MyAnnotation alloc]initWithCoordinate:coord title:titleStr]; [mapview addAnnotation:annotObj]; }
MyAnnotation.h是
@interface MyAnnotation : NSObject <MKAnnotation> { CLLocationCoordinate2D coordinate; NSString *title; NSString *subTitle; NSString *time; } @property (nonatomic)CLLocationCoordinate2D coordinate; @property (nonatomic, retain) NSString *title; @property (nonatomic, retain) NSString *subTitle; @property (nonatomic,retain) NSString *time; -(id)initWithCoordinate:(CLLocationCoordinate2D) c title:(NSString *) t subTitle:(NSString *)timed time:(NSString *)tim; -(id)initWithCoordinate:(CLLocationCoordinate2D) c title:(NSString *)tit; @end
MyAnnotation.m是
@implementation MyAnnotation @synthesize coordinate; @synthesize title; @synthesize time; @synthesize subTitle; -(id)initWithCoordinate:(CLLocationCoordinate2D) c title:(NSString *) t subTitle:(NSString *)timed time:(NSString *)tim { self.coordinate=c; self.time=tim; self.subTitle=timed; self.title=t; return self; } -(id)initWithCoordinate:(CLLocationCoordinate2D) c title:(NSString *)tit { self.coordinate=c; self.title=tit; return self; } @end
获取数组中的所有纬度和经度,并按照user1673099的说法for
循环,
并添加以下zoomtofit
代码来缩放mapview,以通过调用方法来覆盖mapview中的所有注释,
[self zoomToFitMapAnnotations:self.mapView]; - (void)zoomToFitMapAnnotations:(MKMapView *)mapView { if ([mapView.annotations count] == 0) return; CLLocationCoordinate2D topLeftCoord; topLeftCoord.latitude = -90; topLeftCoord.longitude = 180; CLLocationCoordinate2D bottomRightCoord; bottomRightCoord.latitude = 90; bottomRightCoord.longitude = -180; for(id<MKAnnotation> annotation in mapView.annotations) { topLeftCoord.longitude = fmin(topLeftCoord.longitude, annotation.coordinate.longitude); topLeftCoord.latitude = fmax(topLeftCoord.latitude, annotation.coordinate.latitude); bottomRightCoord.longitude = fmax(bottomRightCoord.longitude, annotation.coordinate.longitude); bottomRightCoord.latitude = fmin(bottomRightCoord.latitude, annotation.coordinate.latitude); } MKCoordinateRegion region; region.center.latitude = topLeftCoord.latitude - (topLeftCoord.latitude - bottomRightCoord.latitude) * 0.5; region.center.longitude = topLeftCoord.longitude + (bottomRightCoord.longitude - topLeftCoord.longitude) * 0.5; region.span.latitudeDelta = fabs(topLeftCoord.latitude - bottomRightCoord.latitude) * 1.1; region.span.longitudeDelta = fabs(bottomRightCoord.longitude - topLeftCoord.longitude) * 1.1; region = [mapView regionThatFits:region]; [mapView setRegion:region animated:YES]; }