gpt4 book ai didi

c# - 我应该使用 MKAnnotation、MKAnnotationView 还是 MKPinAnnotation?

转载 作者:可可西里 更新时间:2023-11-01 04:19:26 28 4
gpt4 key购买 nike

我正在调用网络服务并在 MapView 上绘制一些对象。

我不明白的是我应该使用 MKAnnotationPoint 还是 MkAnnotationView?我不确定。当我使用 MKAnnotation 时,图钉显示在 map 上,如果我点击它们,它们会显示标题和副标题。

如果我使用 MKAnnotationView,图钉会显示,但当我点击它们时,没有任何反应。

我也在尝试添加右按钮标注/人字形外观按钮,但也没能解决这个问题。

这是我的代码示例。

    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

然后它们全部显示出来并且可以点击。不过,我不确定如何向它们添加正确的标注按钮。所以这是问题的第二部分。

谢谢。

最佳答案

我没有使用过 MonoTouch,但我相信底层 SDK 的使用与 iOS 相同。

MKAnnotation 是您的注释数据模型所基于的协议(protocol)/接口(interface)。如果您只需要 标题副标题坐标

MKAnnotationView 是注释 View 的显示方式,并在 map View 的 viewForAnnotation 委托(delegate)方法中设置(未内联创建)。注释 View 可以在具有相同外观的多个注释对象之间重复使用(例如图钉图像)。因此理论上,单个 MKAnnotationView 实例可用于实现 MKAnnotation 的多个注释对象(假设它们不是同时显示在屏幕上)。

因此,您创建了一个基于 MKAnnotation 的对象,并将其传递到 addAnnotation(即 AddAnnotationObject)调用中。然后在 viewForAnnotation 委托(delegate)方法中,您创建并返回一个基于 MKAnnotationView 的对象的实例。

“MKPinAnnotation”(实际上是 MKPinAnnotationView)是 MKAnnotationView 的预定义子类,它提供默认的图钉图像。您可以在 viewForAnnotation 委托(delegate)方法中返回 MKPinAnnotationView 的实例,而不是设计自定义 View 。

您可以在 viewForAnnotation 委托(delegate)方法中创建正确的标注附件按钮。您创建一个 UIButtonTypeDetailDisclosure 类型的 UIButton 并将其设置为注释 View 的 rightCalloutAccessoryView

按钮按下将在 map View 的 calloutAccessoryControlTapped 委托(delegate)方法中处理,该方法提供对注释 View 和标注所在的注释的引用。

给出的方法名称是iOS中的,MonoTouch中的名称应该相似。

关于c# - 我应该使用 MKAnnotation、MKAnnotationView 还是 MKPinAnnotation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7935642/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com