iBeginner
iBeginner

Reputation: 249

kindly advice me to display x number of annotation points in mkmap

Good morning, I am very new to objective-c now I am developing my first app. It's a vehicle tracking app. I received the x-number of lat & long from the json service. Now I displayed a single annotation but I need to display all the annotation points which i received from the service here I search for a whole day to find this but am fails to find displaying x-num of annotations. So kindly advice me by using some sample codes. Thanks in Advance... My code is..

- (void)viewDidLoad
{
   [super viewDidLoad];
    //MAP VIEW WebService
    NSString *urlMapString=[NSString stringWithFormat:@"http://www.logix.com/logix_webservice/map.php?format=json&truckno=%@",nam2];
    NSURL *urlMap=[NSURL URLWithString:urlMapString];
    NSData *dataMap=[NSData dataWithContentsOfURL:urlMap];
    NSError *errorMap;
    NSDictionary *jsonMap = [NSJSONSerialization JSONObjectWithData:dataMap options:kNilOptions error:&errorMap]; NSArray *resultsMap = [jsonMap valueForKey:@"posts"];
    NSArray *resMap = [resultsMap valueForKey:@"post"];
    NSArray *latitudeString=[resMap valueForKey:@"latitude"];
     if([resMap count]){
    NSString *latOrgstring = [latitudeString objectAtIndex:0];
    double latitude=[latOrgstring doubleValue];
    NSArray *longitudeString=[resMap valueForKey:@"longitude"];
    NSString *longOrgstring = [longitudeString objectAtIndex:0];
    double longitude=[longOrgstring doubleValue];
    NSString *ignation=[[resMap valueForKey:@"ignition"]objectAtIndex:0];
    i=[ignation intValue];
    //MAP VIEW Point
    MKCoordinateRegion myRegion;
    //Center
    CLLocationCoordinate2D center;
    center.latitude=latitude;
    center.longitude=longitude;
    //Span
    MKCoordinateSpan span;
    span.latitudeDelta=0.01f;
    span.longitudeDelta=0.01f;
    myRegion.center=center;
    myRegion.span=span;
    //Set our mapView
    [MapViewC setRegion:myRegion animated:YES];
    //Annotation
    //1.create coordinate for use with the annotation
    CLLocationCoordinate2D wimbLocation;
    wimbLocation.latitude=latitude;
    wimbLocation.longitude=longitude;
    Annotation * myAnnotation= [Annotation alloc];
    CLLocation *someLocation=[[CLLocation alloc]initWithLatitude:latitude longitude:longitude];
    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    [geocoder reverseGeocodeLocation:someLocation completionHandler:^(NSArray *placemarks, NSError *error) {
        NSDictionary *dictionary = [[placemarks objectAtIndex:0] addressDictionary];
        addressOutlet=[dictionary valueForKey:@"Street"];
        City=[dictionary valueForKey:@"City"];
        State=[dictionary valueForKey:@"State"];
        myAnnotation.coordinate=wimbLocation;
        if (addressOutlet!=NULL&&City!=NULL)
        {
            myAnnotation.title=addressOutlet;
            myAnnotation.subtitle=[NSString stringWithFormat:@"%@,%@", City, State];
        }
        else if (addressOutlet==NULL&&City!=NULL)
        { 
            myAnnotation.title=City;
            myAnnotation.subtitle=[NSString stringWithFormat:@"%@,%@", City, State];
        }
        else if (addressOutlet!=NULL&&City==NULL)
        {
            myAnnotation.title=addressOutlet;
            myAnnotation.subtitle=[NSString stringWithFormat:@"%@", State];
        }
        else if(addressOutlet==NULL&&City==NULL)
        {

            myAnnotation.title=State;
            myAnnotation.subtitle=[NSString stringWithFormat:@"%@",State];

        }
        [self.MapViewC addAnnotation:myAnnotation];
    }];
     }
}

Upvotes: 0

Views: 61

Answers (1)

shivam
shivam

Reputation: 136

Please make an individual class and use by importing . Now use -(id)initWithCoordinate:(CLLocationCoordinate2D)c; and its .m file -(id)initWithCoordinate:(CLLocationCoordinate2D)c { coordinate=c; } Now call this class anywhere and call this method and send your location coordinates. and then add its objects into NSArray. Now call [YourMapView addAnnotations:arrayOfAnnotations]; You will get it what you want.It works in my case I hope you will find it supportive.

Now add annotations on mapView:

   -(MKAnnotationView *) mapView:(MKMapView *)mapV 
    viewForAnnotation:(id<MKAnnotation>)annotation
{

if ([annotation isKindOfClass:[pinAnnotation class]])
{
    static NSString *defaultPinID = @"com.ABC.pin";//Your unique identifier anything
    MKAnnotationView *pinView = nil;

    if(!pinView)
    {
        pinView = (MKAnnotationView *)
       [self.mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
        pinView = [[MKAnnotationView alloc] initWithAnnotation:
annotation reuseIdentifier:defaultPinID] ;
return pinView;
 }
static NSString *AnnotationViewID = @"annotationViewID";
MKAnnotationView* pin =
(MKAnnotationView*) [mapV dequeueReusableAnnotationViewWithIdentifier: 
 AnnotationViewID];

if ( pin == nil ) {

    pin = [(MKAnnotationView*) [MKAnnotationView alloc] 
    initWithAnnotation:annotation   reuseIdentifier: AnnotationViewID] ;

    pin.canShowCallout = YES;

}
else 
{

    [pin setAnnotation: annotation];
}

((MKUserLocation *)annotation).title = @"You are here";

return pin;
}

Upvotes: 1

Related Questions