1

私はios sdkのマップビューが初めてです。緯度と経度を使用してマップビューに複数の注釈を表示したい.基本的に、緯度と経度はすべてサーバー側からjson形式で取得されます。私はすべての緯度と経度を解析し、別の配列に保存しています。しかし、一度にすべての注釈を表示する方法。一度に表示できる注釈は 1 つだけです。以下は、使用している単一の注釈のコードです。

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];
4

2 に答える 2

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
于 2013-10-28T05:46:15.740 に答える
0

すべての緯度と経度を配列で取得し、foruser1673099 が言ったようにループに進みます。

zoomtofitメソッドを呼び出してマップビュー内のすべての注釈をカバーするようにマップビューをズームする次のコードを追加します。

[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];
}
于 2013-10-28T05:43:43.677 に答える