2

Apple GeoCoderDemo を使用してフォワード ジオコーディングを実行しようとしました。「Walmart Michigan」で試してみたところ、返される結果は、デバイス上の Apple のネイティブ マップ アプリと比較するとまったく異なります。

stackOverflow を検索した後、CLGeocoder は住所/商号検索ではなく住所検索しかできないことがわかりました。これは、私の場合、ミシガン州のウォルマートに含まれる通り名を探していることを意味します。

しかし、リンゴのネイティブ マップがなぜ完璧に機能するのか知りたいと思っています。その秘密を知っている人はいますか?

すべての助けに感謝します。

4

1 に答える 1

2

iOS 6.1 で、Apple は私たちに を公開しましたMKLocalSearch。これは真の検索機能であり、Maps アプリが行うことと似ています。例えば:

MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];
request.naturalLanguageQuery = @"restaurant";
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) {
        CustomAnnotation *annotation = [[CustomAnnotation alloc] initWithPlacemark:item.placemark];
        annotation.title = item.name;
        annotation.phone = item.phoneNumber;
        annotation.subtitle = item.placemark.addressDictionary[(NSString *)kABPersonAddressStreetKey];
        [annotations addObject:annotation];
    }];

    [self.mapView addAnnotations:annotations];
}];
于 2013-02-27T21:58:05.077 に答える