我应该使用MKAnnotation,MKAnnotationView还是MKPinAnnotation?
我打电话给Web服务,并绘制一个MapView上的一些对象。
我不明白的是我应该使用MKAnnotationPoint还是MkAnnotationView? 我不确定。 当我使用MKAnnotation时,地图上显示的针脚,如果我点击他们,他们会显示标题和副标题。
如果我使用MKAnnotationView,引脚出现,但是当我点击它们时,什么都不会发生。
我也试图添加正确的button标注/雪佛龙看button,但还没有能够弄清楚。
这是我的代码的一个例子。
MKPointAnnotation mk = new MKPointAnnotation(); MKAnnotationView mkView = new MKAnnotationView(); mk.Coordinate = coord; mk.Title = tl.Name; mk.Subtitle = DateTime.Now.ToShortDateString(); mkView.Annotation = mk; mapView.AddAnnotationObject(mkView);
所以,如果我做了上述 – 针脚出现,但我不能点击其中任何一个。
如果我只是使用:
mapView.AddAnotationObject(mk); //not using the MkAnnotationView
然后他们都出现,可点击。 我不知道如何添加rightcalloutbutton他们呢。 所以这是问题的第二部分。
谢谢。
我没有使用MonoTouch,但底层的SDK使用是相同的iOS我相信。
MKAnnotation
是基于您的注释数据模型的协议/接口。 如果您需要的只是title
, subtitle
和coordinate
,您也可以为注释数据模型对象使用预定义的MKPointAnnotation
类(实现MKAnnotation
接口),而不是创build自定义类。
MKAnnotationView
是注解的视图应该如何显示,并在地图视图的viewForAnnotation
委托方法(未创build内联)中设置。 注释视图可以在具有相同外观的多个注释对象(例如针图像)之间重复使用。 所以从理论上说,一个MKAnnotationView
实例可能用于实现MKAnnotation
多个注解对象(假设它们并不全部在屏幕上)。
所以你创build一个基于MKAnnotation
的对象,并在addAnnotation
(即AddAnnotationObject
)调用中传递它。 然后在viewForAnnotation
委托方法中,创build并返回一个基于MKAnnotationView
的对象的实例。
“MKPinAnnotation”(实际上是MKPinAnnotationView
)是MKPinAnnotationView
的一个预先定义的子类,它提供了一个默认的PIN图像。 您可以在viewForAnnotation
委托方法中返回MKPinAnnotationView
的实例,而不是devise自定义视图。
您将创build正确的标注附件button的位置在viewForAnnotation
委托方法中。 您创build一个types为UIButton
的UIButtonTypeDetailDisclosure
,并将其设置为注释视图的rightCalloutAccessoryView
。
buttonbutton将在地图视图的calloutAccessoryControlTapped
委托方法中处理,该委托方法提供对注释视图的注释以及注释的引用。
给出的方法名称是iOS中的名称,但是MonoTouch中的名称应该类似。