1

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];
    }];
} 
4

1 に答える 1

2

titleitem.placemark直接変更できないため、カスタム アノテーションを作成するかMKPointAnnotation、 の値を使用する必要がありますitem.placemark

(行の上のコードのコメントは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];
于 2014-02-07T02:48:11.793 に答える