【问题标题】:Processing annotations from XML feed处理来自 XML 提要的注释
【发布时间】:2011-07-21 14:16:51
【问题描述】:

大家好,

目前我正在从(有效的)XML 提要中读取位置。

<locations>
    <location>
        <title>Supercoop</title>
        <category>supermarkt</category>
        <adres>Something</adres>
        <latitude>52.8982342</latitude>
        <longitude>5.2449449</longitude>
    </location>

    <location>
        <title>Thuis</title>
        <category>home</category>
        <adres>Something</adres>
        <latitude>52.223482</latitude>
        <longitude>5.248282</longitude>
    </location>
</locations>

“本例中没有真实数据”

我使用 TouchXML 进行解析,效果很好。

我的问题是:将这些信息处理成 MKAnnotation 的首选方式是什么。

我考虑过制作一个对象,例如:MyLocation 并将其存储在那里,但我必须遍历许多 MyLocation 对象。

其次,当我使用“calloutAccessoryControlTapped”方法时,我希望该对象/注释可以访问,这样我可以访问比注释中存储的更多信息,例如,当它进入详细视图时。

我希望并且认为你们可以帮助我! 谢谢!

罗尔夫

【问题讨论】:

    标签: xml ios map location mkmapview


    【解决方案1】:

    不确定您所说的“必须遍历大量 MyLocation 对象”是什么意思,但无论如何,您必须创建一个符合 MKAnnotation 协议的对象并将其添加到地图中。

    您可以在解析每个位置时立即调用addAnnotation,或者最好将注释添加到 NSMutableArray,然后调用addAnnotations 一次性将它们添加到地图中。

    如果您不想创建自己的类并且使用的是 iOS 4+,则可以使用预定义的 MKPointAnnotation 类。这为您提供了属性标题、副标题和坐标,因此您必须以某种方式将标题、类别和地址挤进去。

    创建您自己的实现 MKAnnotation 的类并添加您的自定义属性并不难。这比试图将你的属性塞进 MKPointAnnotation 更好。但是,不要使用 MapCallouts 示例应用程序中提供的示例(这意味着您必须为每个唯一坐标创建一个单独的类)。相反,创建一个可设置的坐标属性。

    calloutAccessoryControlTapped 方法中,可以使用view.annotation 访问注释对象,然后您可以将其转换为您的自定义类并轻松访问属性。

    对于一些示例代码,请尝试以下其他答案:

    【讨论】:

    • 好的,谢谢。我创建了一个 MyLocation 对象。在我的循环中,我创建了一个对象并将其添加到地图中。我的对象中有以下方法:“-(id)initWithTitle:(NSString *)Title subTitle:(NSString *)subTitle categorie:(NSString *)cat坐标:(CLLocationCoordinate2D)coord”但我想将更多数据存储在该对象供以后在循环之外使用。并且注释需要有一个不同的图像,我通过添加到对象的类别来定位。
    • 对于图像我可以使用这个委托方法:“- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation”我猜?但是,对于每种注释,我都需要一个 if 吗?
    • 这取决于图像的逻辑。您可以将图像属性添加到注释对象并在创建注释时设置它,然后在 viewForAnnotation 中将 annView.image 设置为它,或者您可以使用基于其他注释属性(如标题、类别)的条件来确定要在 viewForAnnotation 中使用的图像, id# 等
    • 我使用它来创建一个位置对象并将其添加到地图中。 cl.ly/2j3f2k2Q1A1T0E3E0h2k 我猜我不能在那里设置图像?在 viewForAnnotation 中,如果这比那张图像要多得多..
    • 我用 imgId 向我的对象添加了一个 int 属性。 id 1 = 家,2 = 超市等。但是添加此图像的最佳方法在哪里?在 viewForAnnotation 中?
    猜你喜欢
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    相关资源
    最近更新 更多