从MKLocalSearch为注释创建标题
我添加了MKLocalSearch并且引脚正确显示。 唯一的问题是引脚标题有名称和地址,我只想要名称。 我该怎么改变呢 这是我正在使用的代码 –
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated { MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init]; request.naturalLanguageQuery = @"School"; request.region = mapView.region; MKLocalSearch *localSearch = [[MKLocalSearch alloc] initWithRequest:request]; [localSearch startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) { NSMutableArray *annotations = [NSMutableArray array]; [response.mapItems enumerateObjectsUsingBlock:^(MKMapItem *item, NSUInteger idx, BOOL *stop) { // if we already have an annotation for this MKMapItem, // just return because you don't have to add it again for (idannotation in mapView.annotations) { if (annotation.coordinate.latitude == item.placemark.coordinate.latitude && annotation.coordinate.longitude == item.placemark.coordinate.longitude) { return; } } // otherwise, add it to our list of new annotations // ideally, I'd suggest a custom annotation or MKPinAnnotation, but I want to keep this example simple [annotations addObject:item.placemark]; }]; [mapView addAnnotations:annotations]; }]; }
由于无法直接修改item.placemark
的title
,因此您需要使用MKPointAnnotation
中的值创建自定义注释或item.placemark
。
( addObject
行上方代码中的addObject
提到了“MKPinAnnotation”,但我认为它的意思是“MKPointAnnotation”。)
下面的示例使用简单的选项,使用SDK提供的预定义MKPointAnnotation
类来创建您自己的简单注释。
替换此行:
[annotations addObject:item.placemark];
用这些:
MKPlacemark *pm = item.placemark; MKPointAnnotation *ann = [[MKPointAnnotation alloc] init]; ann.coordinate = pm.coordinate; ann.title = pm.name; //or whatever you want //ann.subtitle = @"optional subtitle here"; [annotations addObject:ann];