如何在地图视图中放置引脚?

时间:2009-11-27 04:42:17

标签: iphone google-maps

我是iPhone应用程序中的新用户。我想在我的 MKMapView 中显示引脚。我该怎么做?

给我一​​些宝贵的建议。

3 个答案:

答案 0 :(得分:4)

您需要创建一个实现 MKAnnotation 协议的委托:

@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

对于每个地图点,您需要实例化一个 AnnotionDelegate 对象(传递点的坐标)并将其添加到 MKMapView

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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