2

a の結果が得られ、次の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];

タップすると「マートンロード」と表示されるピンが追加されますが、「シネワールド」と表示されるようにしたいです。

MKMapItemただし、物を出し入れする方法に関する情報を見つけるのは本当に難しいと思いMKPlacemarkます。

場所マークで使用しようとするmapItem.nameと、すべて「United States」と表示されます。

これからさらに有用な情報を得るにはどうすればよいでしょうか?

4

1 に答える 1

2

はそのプロパティMKPlacemarkのアドレスを返しますが、クラスでは自分で設定することはできません。titleMKPlacemarktitle

あなたができることは、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)を使用することもできます。nametitle

MKMapItemまた、関連するアノテーションまたはMKPlacemark事後的に追加するアノテーション (たとえば、マップ ビューのデリゲート メソッド) にアクセスできるようにする場合はMKPointAnnotation、追加する場所の代わりにカスタム クラスを使用する必要があることに注意してください。注釈の作成時に設定できる「sourceMapItem」または「sourcePlacemark」プロパティ。

このようにして、必要に応じて を設定できますが、注釈オブジェクトが作成されたすべての元または値titleに引き続きアクセスできます (ソース マップ アイテムまたは目印)。MKMapItemMKPlacemarkMKPointAnnotation

于 2014-08-28T11:07:30.870 に答える