11

为了避免foursquare 或其他本地搜索提供商之一的API 限制,我想使用iOS 6.1 中的MKLocalSearch。以下代码:

MKLocalSearchRequest *localSearchRequest = [[MKLocalSearchRequest alloc] init];
MKCoordinateRegion localSearchRegion = MKCoordinateRegionMakeWithDistance(CLLocationCoordinate2DMake([theLocationChange.latitude floatValue], [theLocationChange.longitude floatValue]), 500.0f, 500.0f);
localSearchRequest.naturalLanguageQuery = @"restaurants";
localSearchRequest.region = localSearchRegion;
MKLocalSearch *localSearch = [[MKLocalSearch alloc] initWithRequest:localSearchRequest];

[localSearch startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error)
{
    if (error)
    {
        NSLog([error localizedDescription]);
    }
    for (MKMapItem* mapItem in response.mapItems)
    {
        NSLog(@"mapitem name is: %@",mapItem.name);
    }

}];

将正确获取并显示指定位置附近的餐厅。如果我更改localSearchRequest.naturalLanguageQuery为“酒店”,它将获取并显示酒店。这同样适用于“医院”、“酒吧”等。但是,如果我尝试使用空字符串或“”、“*”或“?” 对于localSearchRequest.naturalLanguageQuery,它不返回任何结果。

如果我使用foursquare API 并向它发送一个位置,我可以轻松地返回一个包含所有类型本地企业的场所列表。有没有办法使用 MKLocalSearch 来返回所有场地或本地商家?

4

1 回答 1

0

Apple 文档说 localSearchRequest.naturalLanguageQuery 被视为自然语言查询,这意味着您可以输入任何内容并获得与查询相关的结果。但是 Apples Maps 数据库可能不会像您期望的那样返回值。

于 2016-03-08T15:43:23.507 回答