MKMapItem没有在MKPlacemark上显示正确的信息

时间:2014-08-27 16:43:27

标签: ios objective-c mkmapview mkannotation mkmapitem

我得到MKLocalSearch的结果,其中包含类似......

的内容
{
    address =     {
        formattedAddressLine =         (
            "Marton Road",
            Middlesbrough,
            TS1,
            England
        );
        structuredAddress =         {
            administrativeArea = England;
            areaOfInterest =             (
                "Great Britain"
            );
            country = "United Kingdom";
            countryCode = GB;
            fullThoroughfare = "Marton Road";
            geoId =             (
            );
            locality = Middlesbrough;
            postCode = TS1;
            subAdministrativeArea = Middlesbrough;
            thoroughfare = "Marton Road";
        };
    };
    addressGeocodeAccuracy = 0;
    business =     (
                {
            UID = 9301704419119613323;
            URL = "http://www.cineworld.co.uk";
            attribution =             (
                                {
                    attributionURLs =                     (
                        "yelp5.3:///biz/cineworld-middlesbrough",
                        "yelp4:///biz/cineworld-middlesbrough",
                        "yelp:///biz/cineworld-middlesbrough",
                        "http://yelp.com/biz/cineworld-middlesbrough"
                    );
                    sourceIdentifier = "com.yelp";
                    sourceVersion = 1;
                }
            );
            canBeCorrectedByBusinessOwner = 1;
            name = Cineworld;
            source =             (
                                {
                    "source_id" = "b2LOPag6ha6845__dgXehw";
                    "source_name" = yelp;
                },
                                {
                    "source_id" = 6670;
                    "source_name" = tribune;
                },
                                {
                    "source_id" = 2000000103009680;
                    "source_name" = "acxiom_intl";
                },
                                {
                    "source_id" = "cineworld-middlesbrough";
                    "source_name" = "yelp_alias";
                }
            );
            "star_rating" =             (
                0
            );
            telephone = "+448712002000";
        }
    );
    center =     {
        lat = "54.57633773904653";
        lng = "-1.228197113614671";
    };
    inputLanguage = en;
    localSearchProviderID = 9902;
    mapRegion =     {
        eastLng = "-1.224891596539819";
        northLat = "54.57545000290778";
        southLat = "54.5738619816233";
        westLng = "-1.227631256834202";
    };
    name = Cineworld;
    type = 57;
}

现在我将它添加到我的地图中......

id <MKAnnotation> annotation = mapItem.placemark;

[self.mapView addAnnotation:annotation];

它添加了一个引脚,当我点击它时显示&#34; Marton Road&#34;但我希望能够展示&#34; Cineworld&#34;。

我发现很难找到有关从MKMapItemMKPlacemark获取内容的任何信息。

如果我尝试在地方标记中使用mapItem.name,那么他们都会显示&#34;美国&#34;。

知道如何从中获取更多有用的信息吗?

1 个答案:

答案 0 :(得分:2)

MKPlacemark返回其title媒体资源的地址,MKPlacemark课程不允许您自己设置title

您可以做的是创建MKPointAnnotation(具有可设置的title属性)并将其title设置为您想要的任何内容mapItem.name

例如:

MKPointAnnotation *pa = [[MKPointAnnotation alloc] init];
pa.title = mapItem.name;
pa.coordinate = mapItem.placemark.coordinate;
[self.mapView addAnnotation:pa];


注意:
您不必使用MKPointAnnotation课程(它是最方便的课程)。
您还可以使用符合MKAnnotation并且具有可设置title属性的自定义类(或某些返回MKMapItem&#39; s name的类作为其title)。

另请注意,如果您希望能够访问事后添加的注释中的相关MKMapItemMKPlacemark(例如,在地图视图委托方法中),您可以# 39; ll需要使用自定义类而不是MKPointAnnotation来添加&#34; sourceMapItem&#34;或&#34; sourcePlacemark&#34;您可以在创建注释时设置的属性。

这样,您可以根据需要设置title,但仍然可以访问创建注释对象的所有原始MKMapItemMKPlacemark值(您无法执行此操作)如果您只使用MKPointAnnotation,则可以轻松实现这一点,因为它不会保留对源地图项或地标的引用。