2014-02-07 3 views
1

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 (id<MKAnnotation>annotation 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]; 
    }]; 
} 

답변

2

item.placemarktitle가 직접 수정할 수 없기 때문에, 당신은 item.placemark의 값을 사용하여 사용자 정의 주석 또는 MKPointAnnotation을 만들어야합니다 - 여기에 내가 사용하고있는 코드입니다.

합니다 ( addObject 라인 위의 코드의 코멘트는 "MKPinAnnotation"언급하지만 나는 그것이 "MKPointAnnotation을"말을 의미되었다 생각합니다.)

예 아래의 미리 정의 된 MKPointAnnotation를 사용하는 간단한 옵션을 사용 자신 만의 간단한 주석을 만들기 위해 SDK에서 제공하는 클래스입니다. 이들과

[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]; 

이 줄을 교체