2013-10-28 40 views
1

我是新來的地圖視圖在ios sdk。我想在地圖視圖 中使用lat和long顯示多個註釋。基本上所有經緯度都是從服務器端以 json格式來的。我解析所有經緯度並將其保存在不同的數組中。 但是如何在一次顯示所有註釋。我能夠在time.Below只顯示一個註釋 是單一註解的代碼我使用,在地圖視圖中顯示多個註釋

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]; 
+2

去了'爲loop'添加註釋映射。 – user1673099

回答

4

試試這個

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 
+0

MyAnnotation * annotObj = [[MyAnnotation alloc] initWithCoordinate:coord title:titleStr]; [mapview addAnnotation:annotObj];這是什麼?? – user2902101

+0

MyAnnotation是一個類...在這個類中,我們必須實現註釋標題和副標題... – guptha

+0

感謝它的工作。 – user2902101

0

獲取所有的經度和緯度的陣列和去爲for環路user1673099說,

,並添加以下代碼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]; 
} 
+0

我應該將此代碼添加到循環? – user2902101

+0

加入' - (void)zoomToFitMapAnnotations:(MKMapView *)mapView;'在你的.h文件中,然後在.m文件中加入for循環(不在裏面)添加'[self zoomToFitMapAnnotations:self.mapView];' – NAZIK

+0

我已經添加相同,但它不工作..... – user2902101

相關問題