title: Issue in Displaying Multiple annonations view in MkMapKit
body: <p>I need to display multiple annonation views in MKMapKit..I use this code..</p>
  
  <pre><code>- (void)viewDidLoad
  {
      [super viewDidLoad];
      // Do any additional setup after loading the view from its nib
  
      [mapView setMapType:MKMapTypeStandard];
      [mapView setZoomEnabled:YES];
      [mapView setScrollEnabled:YES];
      DisplayMap *ann = [[DisplayMap alloc] init];
      //NSLog(@"xapp.arrplacename:%d",[xapp.arrplacename count]);
      for (i=0;i&lt;=[arrplacename count]-1;i++)
      {
  
          MKCoordinateRegion region = { {0.0, 0.0 }, { 0.0, 0.0 } };
          //arrplacename contains the address of the locations
          NSString *straddress=[arrplacename objectAtIndex:i];
          NSString *strregion=@"";
          NSString *strs=[straddress stringByAppendingString: strregion];
          //  lbladdress.text=strs;
          //  NSString add=strs;
          // here you define the url setting your address
          NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&amp;output=csv",[strs stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
  
          NSLog(@"US: %@",urlString);
  
          // then you get the response string here
          NSString *locationString = [[[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:urlString]] autorelease];
          NSLog(@"loaction strings%@",locationString);
          // now you can create an array splitting the response values using the ","
          //[listItems addObject:locationString];
          listItems = [locationString componentsSeparatedByString:@","];
  
          NSLog(@"A: %@",[xapp.listItems objectAtIndex:2]);
  
          // define latitude and longitude variables
          double latitude  = 0.0;
          double longitude = 0.0;
  
          NSString *strlatitude;
          NSString *strlongitude;
  
          strlatitude=[xapp.listItems objectAtIndex:2];
          strlongitude=[xapp.listItems objectAtIndex:3];
  
          float stringFloat = [strlatitude floatValue]; 
          float string1Float = [strlongitude floatValue]; 
  
          // if your array has inside the sctructure you aspect (4 values as described in my previous post) and the first value is like "200" (OK result)
          if([xapp.listItems count] &gt;= 4 &amp;&amp; [[xapp.listItems objectAtIndex:0] isEqualToString:@"200"]) 
          {
              // not sure if you need the accurancy parameter
              //accurancy = [[listItems objectAtIndex:1] intValue];
  
              // here you can get your values
  
              // latitude = [[listItems objectAtIndex:2] doubleValue];
              //longitude = [[listItems objectAtIndex:3] doubleValue];
  
              latitude = stringFloat;
              longitude = string1Float;
  
          }
          else {
              NSLog(@"Error on map");
          }
          region.center.latitude = latitude;
          region.center.longitude = longitude;
          NSLog(@"latitude:%g",region.center.latitude);
          //  region.center.latitude = 42.7157850;
          // region.center.longitude = 27.56470180;
  
          region.span.longitudeDelta = 0.01f;
          region.span.latitudeDelta = 0.01f;
          [mapView setRegion:region animated:YES];
          [mapView setDelegate:self];
          ann.title = [xapp.arrplacename objectAtIndex:i];
          ann.subtitle = [xapp.arrplacename objectAtIndex:i];
          ann.coordinate = region.center;
          [mapView addAnnotation:ann];
  
      }
  
  }
  </code></pre>
  
  <p>I do have some problems in this code....all the coordnates are not added to the listitems array..I can see only the objects that are added atlast....</p>
  
  <p>This is the delegates I add for displaying the annonation in my map..</p>
  
  <pre><code>- (CLLocationCoordinate2D) geoCodeUsingAddress:(NSString *)address{
  
      NSLog(@"ssssss");
  
      double latitude = 0, longitude = 0;
      NSString *esc_addr = [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
      NSString *req = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?sensor=false&amp;address=%@", esc_addr];
      NSString *result = [NSString stringWithContentsOfURL:[NSURL URLWithString:req] encoding:NSUTF8StringEncoding error:NULL];
      if (result) {
          NSScanner *scanner = [NSScanner scannerWithString:result];
          if ([scanner scanUpToString:@"\"lat\":" intoString:nil] &amp;&amp; [scanner scanString:@"\"lat\":" intoString:nil]) {
              [scanner scanDouble:&amp;latitude];
              if ([scanner scanUpToString:@"\"lng\":" intoString:nil] &amp;&amp; [scanner scanString:@"\"lng\":" intoString:nil]) {
                  [scanner scanDouble:&amp;longitude];
              }
          }
      }
      CLLocationCoordinate2D center;
      center.latitude = latitude;
      center.longitude = longitude;
  
      return center;
  }
  
  
  -(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:
  (id &lt;MKAnnotation&gt;)annotation {
  
     MKPinAnnotationView *pinView = nil;
      NSLog(@"pinnview before release %d",[pinView retainCount]);
  
      if (pinView !=nil) {
          pinView =nil;
          [pinView release];
      }
      NSLog(@"pinnview after release %d",[pinView retainCount]);
  
      // if it's the user location, just return nil.
      if ([annotation isKindOfClass:[MKUserLocation class]])
          return nil;
  
      if(annotation != mapView.userLocation)
      {
  
          static NSString *defaultPinID = @"your-pin";
  
          pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
  
          if ( counting &lt; [mapView.annotations count])
          {
              counting++;
  
              pinView = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID] autorelease];
  
  
             /* for(DisplayMap* a in mapView.annotations)
              {
                  if (annotation == a){
                      pinView.image =
                      [UIImage imageWithContentsOfFile:
                       [[NSBundle mainBundle] pathForResource:a.image ofType:nil]];   
                  }
              }*/
              pinView.centerOffset= CGPointMake(0,-10);
              pinView.canShowCallout = YES;
  
  
          }
  
      }
  
     // return pinView;
  
  
  }
  
  - (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
  {
      NSLog(@"enter");
      [mapView selectAnnotation:[[mapView annotations] lastObject] animated:YES];
  }
  </code></pre>
  
  <p>Delegates are called only once eventhough I'm using <code>[mapView addAnnotation:ann];</code> inside the <strong>for</strong> loop...And it shows pin only for the last item tatz added in the array...How can I overcome this????</p>