自定义注释

时间:2011-02-17 03:15:07

标签: iphone objective-c

我在这里有关于自定义注释的问题。以下是我如何显示引脚但我希望在用户点击引脚时将图像插入到注释中。我怎么能这样做?

- (void) showMarkingOnMap:(Service *) ser
    {
        if (!self.mapView.loaded) {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"iPoly" 
                                                            message:@"Failed to load the map."
                                                           delegate:self 
                                                  cancelButtonTitle:@"Ok" 
                                                  otherButtonTitles:nil, nil];
            [alert show];
            [alert release];

            return;

        }
        id<AGSLayerView> graphicsLayerView = [self.mapView.mapLayerViews objectForKey:@"GraphicsLayer"];
        AGSGraphicsLayer *graphicsLayer = (AGSGraphicsLayer*)graphicsLayerView.agsLayer;
        [graphicsLayer removeAllGraphics];

        // Create a symbols png graphic
        AGSPictureMarkerSymbol *genSymbol = [AGSPictureMarkerSymbol pictureMarkerSymbolWithImageNamed:@"pushpin.png"];
        ServiceInfoTemplate *infoTemplate = [[ServiceInfoTemplate alloc] init];
        AGSGraphic *genGraphic;
        AGSPoint *genPt;
        NSMutableDictionary *dic= [[NSMutableDictionary alloc] init];
        [dic setObject:[ser name] forKey:@"NAME"];
        if([ser.location isEqualToString: @"\n"] || (ser.location == nil)){
            [dic setObject:@"" forKey:@"DESC"];
        } else {
            [dic setObject:[ser location] forKey:@"DESC"];
        }
        genPt = [AGSPoint pointWithX:[[ser xcoordinate] floatValue]
                                        y:[[ser ycoordinate] floatValue]
                         spatialReference:self.mapView.spatialReference];
        genGraphic = [[AGSGraphic alloc] initWithGeometry:genPt symbol:genSymbol attributes:dic infoTemplateDelegate:infoTemplate];
        [graphicsLayer addGraphic:genGraphic];

        [graphicsLayer dataChanged];

        [self.mapView zoomWithFactor:0.1 atAnchorPoint:genPt.cgPoint animated:NO];
        [self.mapView centerAtPoint:genPt animated:YES];

        //CGPoint *pt = CGPointMake([[ser ycoordinate] floatValue], [[ser xcoordinate] floatValue]);


    }

1 个答案:

答案 0 :(得分:1)

这并不像你希望/想象的那么容易。这是一个关于如何做到这一点的完整教程。 请注意,通过此实现,您的标注将占据视图的整个宽度。

请参阅: http://blog.asolutions.com/2010/09/building-custom-map-annotation-callouts-part-1/