尝试在mkmapview上使用注释和气泡标注

时间:2011-06-02 12:59:32

标签: iphone objective-c mkmapview

我正在iphone中开发一个处理地图的应用程序。我有很多注释。我需要在标注气泡中加载不同的图像。这意味着用户可以编辑标注它可能是图像,并且他还在标注气泡上键入文本。如何在标注气泡上给出多个动作。
最重要的想法是,单击保存按钮后,此注释必须放在地图上。例如我有两个类(mapview和photoview),并且在photoView中我有三个按钮(chooshphoto,takephoto,usephoto)当用户拍照或浏览照片时他想要使用这张照片。当他点击usephoto按钮时,注释必须之后放下。并在mapView上显示。

1 个答案:

答案 0 :(得分:3)

你问题的后半部分不是很清楚,但我会尝试回答第一部分。

您可以应用于MKAnnotation的标注视图的唯一真正自定义是设置标题,字幕标签和左/右标注辅助视图。您可以将后者设置为images或callOutAccessoryViewIndicators,或另一个UIView,但它不能高于32像素。 MKAnnontationView documentation

我真的很害怕。对于比这更高级的东西,您必须创建自定义实现。 This博客帖子应该会有所帮助,我打算自己构建类似的东西。

可以将MKPinAnnontationView设置为在您描述的地图上删除,只要您对Annontation视图本身的Pin图像感到满意,您只需将其animatesDrop属性设置为YES即可生成动画在地图上添加时。

MKPinAnnontationView documentation

编辑:我认为这就是你想要的; -

在mapView控制器中,定义一个属性来保存要设置动画的对象。

@interface MyMapViewController {

    Photo *photoToAnimate;

}
@property (nonatomic, retain) Photo *photoToAnimate;

@end

然后在您的实施文件中,将以下内容添加到ViewDidAppear

-(void)ViewDidAppear {
     ...
     if (photoToAnimate) {
         [mapView addAnnotation:photoToAnimate];
         self.photoToAnimate = nil; // reset it for the next time
     }
     ...
 }

然后在PhotoViewController中,只需按下按钮

即可设置属性
-(void)usePhotoAction {
    ...
    mapViewController.photoToAnimate = photo;
    ...
 }

至少那是我在评论中试图描述的非常简单的hacky方式。当MapView重新出现时,ViewDidAppear将触发,并相应地将引脚添加到自身。如果需要添加多个引脚,请使用数组存储它们并遍历数组。

可能有更好的模式,但简而言之,你的MapView需要抓住你想要以某种方式删除的对象,然后在调用ViewDidAppear之前不会对它做任何事情。