逻辑问题 - MapKit

时间:2012-02-13 15:56:13

标签: iphone objective-c cocoa-touch

以下是我的 MapKitDisplayViewController.m

- (void)viewDidLoad {
    [super viewDidLoad];

        [mapView setMapType:MKMapTypeStandard];
        [mapView setZoomEnabled:YES];
        [mapView setScrollEnabled:YES];
        MKCoordinateRegion region = { {0.0, 0.0 }, { 0.0, 0.0 } }; 
        region.center.latitude = 22.569722 ;
        region.center.longitude = 88.369722;
        [mapView setRegion:region animated:YES]; 

        [mapView setDelegate:self];

        DisplayMap *ann = [[DisplayMap alloc] init]; 
        ann.title = [person name];
        ann.subtitle = [person address]; 
        ann.person = person;

        ann.coordinate = region.center; 
        [mapView addAnnotation:ann];
}
-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:
 (id <MKAnnotation>)annotation {
        MKPinAnnotationView *pinView = nil; 
        if(annotation != mapView.userLocation) 
        {
                static NSString *defaultPinID = @"com.invasivecode.pin";
                pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
                if ( pinView == nil ) pinView = [[[MKPinAnnotationView alloc]
                                                                                  initWithAnnotation:annotation reuseIdentifier:defaultPinID] autorelease];
                UIImageView *iconView = [[UIImageView alloc] initWithImage: [UIImage imageWithString:@?????????????????];
                annotationView.leftCalloutAccessoryView = iconView;

                pinView.pinColor = MKPinAnnotationColorRed; 
                pinView.canShowCallout = YES;
                pinView.animatesDrop = YES;
                } 

        return pinView;
}

你会看到它所说的行????????我需要在那里显示图像。

当用户点击针点时,会出现弹出窗口。标题,副标题和图像被假设显示在弹出窗口中。我相信以下行应显示该弹出窗口的图像。但我无法将Person对象(或包含person对象的pipoint)图像URL传递给此方法。你能帮我在这里显示所选的图片网址吗?

2 个答案:

答案 0 :(得分:0)

  

它不会失败。我需要知道如何传递person对象   用户选择viewForAnnotation方法

啊,我知道了。我有一个类似的问题,这可能是一个棘手的问题。我正在修改我的注释代码,所以你可以看到它,因为它不起作用,但我需要存储一些你可以稍后检索的东西。

我做了一个对象,MKAnnotation。

@interface FotoMapLocation : NSObject <MKAnnotation> {

因此,当我制作注释时,我创建了一个FotoMapLocation对象。

    FotoMapLocation *annotation = [[FotoMapLocation alloc] initWithTitle:title 
                                                            subtitle:subtitle 
                                                                foto:aFoto 
                                                      thumbnailImage:aFoto.thumbnailImage
                               ];
    [mapView addAnnotation:annotation]; 

现在,您可以在此处存储任何内容。所以将Person对象存储在子类中。

我知道这只是那里的一半,而且非常漫无边际。但是我正好在翻录代码的过程中,然后又出现了另一个火,所以它目前处于中间状态。但我希望在几天后回归它。我会回来查看,如果你没有,我会更新这个答案。

答案 1 :(得分:0)

这就是我在viewForAnnotation方法

中所做的
DisplayMap *dm= (DisplayMap *)annotation;

NSString *url = [dm.person urlOfPerson];