MKMapItem не показывает правильную информацию о MKPlacemark

Я получаю результаты 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]; 

Он добавляет булавку, которая, когда я нажимаю на нее, показывает «Мартон-роуд», но мне хотелось бы показать «Cineworld».

Мне очень сложно найти информацию о том, как получить материал из MKMapItem и в MKPlacemark .

Если я попытаюсь использовать mapItem.name в mapItem.name места, тогда все они показывают «Соединенные Штаты».

Любая идея, как я могу получить более полезную информацию из этого?

Solutions Collecting From Web of "MKMapItem не показывает правильную информацию о MKPlacemark"

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 качестве title ).

Также обратите внимание, что если вы хотите иметь доступ к соответствующему MKMapItem или MKPlacemark в аннотации, которую вы добавляете после факта (например, в методах делегата представления карты), вам нужно будет использовать собственный класс вместо MKPointAnnotation где вы добавляете свойство sourceMapItem или sourcePlacemark, которое вы можете установить при создании аннотации.

Таким образом, вы можете установить title мере необходимости, но все же получить доступ ко всем исходным значениям MKMapItem или MKPlacemark из которых был создан объект аннотации (вы не могли бы сделать это легко, если используете только MKPointAnnotation поскольку он не поддерживает ссылку на исходная карта или метка).