开发者

how to put pins in the map view?

I am a new user in the iPhone application. I wanted to show pins in my MKMapView. How can开发者_如何学运维 i do it?

Give me some valuable suggestions.


You need to create a delegate that implements the MKAnnotation protocol:

@interface AnnotationDelegate : NSObject <MKAnnotation> {
    CLLocationCoordinate2D coordinate;
}

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;

- (id) initWithCoordinate:(CLLocationCoordinate2D)coord;

@end

@implementation AnnotationDelegate

@synthesize coordinate;

- (id) initWithCoordinate:(CLLocationCoordinate2D)coord
{
    coordinate.latitude = coord.latitude;
    coordinate.longitude = coord.longitude;
    return self;
}

@end

For each of your map points you need to instantiate one of your AnnotionDelegate objects (passing in the coordinates of the point) and add it to the MKMapView:

AnnotationDelegate * annotationDelegate = [[[AnnotationDelegate alloc] initWithCoordinate:coordinate] autorelease];
[self._mapView addAnnotation:annotationDelegate];


NSString * urlString = nil;
        urlString = [NSString stringWithFormat: @"http://maps.google.com/maps?saddr=%f,%f&daddr=%@",12.58, 77.35, [NSString stringWithFormat:@"%@,%@,%@",[detailInfoDict valueForKey:@"address"],[detailInfoDict valueForKey:@"city"],[detailInfoDict valueForKey:@"state"]]];
        urlString = [urlString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString: urlString]]


if([points retainCount] > 0)
  {
    [points release];
    points = nil;
  }


  if([annotationAry retainCount] > 0)
  {
    [annotationAry release];
    annotationAry = nil;
  }
  points = [[NSMutableArray alloc]init];
  annotationAry = [[NSMutableArray alloc]init]; 
  for(int i=0;i<[longitudeary count];i++)
  { 
    CLLocation* currentLocation1 = [[CLLocation alloc] initWithLatitude:[[latitudeary objectAtIndex:i]doubleValue] longitude:[[longitudeary objectAtIndex:i]doubleValue]];

    [points addObject:currentLocation1];
  }


  for(int i=0;i<[points count];i++)
  {
    // CREATE THE ANNOTATIONS AND ADD THEM TO THE MAP
    CSMapAnnotation* annotation = nil;

    // create the start annotation and add it to the array
      annotation = [[[CSMapAnnotation alloc] initWithCoordinate:[[points objectAtIndex:i] coordinate] 
                          annotationType:CSMapAnnotationTypeImage 
                              title:@"123456..."
                               shID:[shIDary objectAtIndex:i] 
                              catID:[catIDary objectAtIndex:i]
                             ciggUse:[ciggaretteUSEary objectAtIndex:i]
                             wifiUse:[wifiUSEary objectAtIndex:i]
                            controller:self]autorelease];


    [annotationAry addObject:annotation];
  }

  [mapViewmy addAnnotations:[NSArray arrayWithArray:annotationAry]];
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜