Как искать местный бизнес по имени, местоположению в iOS?

Я работаю над проектом, в котором мы показываем поиск местного бизнеса. Я использую YELP для поиска местного бизнеса. Согласно документации YELP я создал запрос. Но это дает результат только на основе местоположения.

Я пытаюсь использовать Google Place API, но не получаю желаемого результата.

Мой запрос YELP - http://api.yelp.com/v2/search/?term=restaurant&location=nyc&limit=20&offset=1 Мой запрос API Google Place - https://maps.googleapis.com/maps/api/place/textsearch/json?query=hotels+in+nyc&sensor=true&key=AIzaSyCHwd5OgRXdeuTWV46SHdMLq2lXL20t22U

  1. Как получить результат по названию компании и местоположению, а также с помощью YELP или Google Place API?
  2. Какой из них лучше использовать YELP или Google Place API?

3 ответа

Решение

Я решаю свою проблему с помощью Google Places API -

Благодаря этому ответу.

Мы получаем ответ JSON/XML

  1. Искать Отели возле Город:

https://maps.googleapis.com/maps/api/place/textsearch/json?query=hotels+in+Pune&sensor=true&key=AddYourOwnKeyHere

  1. Поиск конкретного места в городе:

https://maps.googleapis.com/maps/api/place/textsearch/json?query=[SearchPlaceName]+in+[CityName]&sensor=true&key=AddYourOwnKeyHere

  1. Поиск конкретного места в городе по заданному типу:

https://maps.googleapis.com/maps/api/place/textsearch/json?query=[SearchPlaceName]+in+[CityName]&type=[PlaceType]&sensor=true&key=AddYourOwnKeyHere

  • Чтобы получить изображение / иконки для ресторана / места -

Согласно документации.

Мы можем использовать photo_reference & запрос как -

https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photoreference=CoQBegAAAFg5U0y-iQEtUVMfqw4KpXYe60QwJC-wl59NZlcaxSQZNgAhGrjmUKD2NkXatfQF1QRap-PQCx3kMfsKQCcxtkZqQ&key=AddYourOwnKeyHere

1) Я использовал Yelp API. URL для специального бизнеса - http://api.yelp.com/v2/business/ Для глобального поиска - http://api.yelp.com/v2/search После поиска необходимо правильно передать данные в URL-адрес поиска API. Уведомление о подписи URL в NSStringWithFormat. И не забудьте ключи OAuth! Мой запрос:

-(void)searchBy:(NSString *)categoryFilter inLocationCity:(NSString *)aLocationCity {

NSString *urlString = [NSString stringWithFormat:@"%@?term=%@&location=%@",
                       YELP_SEARCH_URL,
                       categoryFilter,
                       aLocationCity];

NSURL *URL = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

OAConsumer *consumer = [[OAConsumer alloc] initWithKey:OAUTH_CONSUMER_KEY
                                                secret:OAUTH_CONSUMER_SECRET];

OAToken *token = [[OAToken alloc] initWithKey:OAUTH_TOKEN
                                       secret:OAUTH_TOKEN_SECRET];

id<OASignatureProviding, NSObject> provider = [[OAHMAC_SHA1SignatureProvider alloc] init];
NSString *realm = nil;

OAMutableURLRequest *request = [[OAMutableURLRequest alloc] initWithURL:URL
                                                               consumer:consumer
                                                                  token:token
                                                                  realm:realm
                                                      signatureProvider:provider];

[request prepare];

NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];

if (conn) {
    self.urlRespondData = [NSMutableData data];
}

}

Также добавьте методы NSURLConnectionDelegate:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

[self.urlRespondData setLength:0]; 

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)d {
[self.urlRespondData appendData:d];

}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

NSError *e = nil;
NSDictionary *resultResponseDict = [NSJSONSerialization JSONObjectWithData:self.urlRespondData
                                                                   options:NSJSONReadingMutableContainers
                                                                     error:&e];
if (self.resultArray && [self.resultArray count] > 0){

    [self.resultArray removeAllObjects];
}

if (!self.resultArray) {
    self.resultArray = [[NSMutableArray alloc] init];
}
DLog(@"YELP response %@", resultResponseDict);

if (resultResponseDict && [resultResponseDict count] > 0) {

    if ([resultResponseDict objectForKey:@"businesses"] &&
        [[resultResponseDict objectForKey:@"businesses"] count] > 0) {

        for (NSDictionary *venueDict in [resultResponseDict objectForKey:@"businesses"]) {

            Venue *venueObj = [[Venue alloc] initWithDict:venueDict];
            [self.resultArray addObject:venueObj];
        }
    }
}

[self.delegate loadResultWithDataArray:self.resultArray];

}

-(instancetype)initWithDict:(NSDictionary *)dict {

self = [super init];

if (self) {

    self.name = [dict objectForKey:@"name"];
    self.venueId = [dict objectForKey:@"id"];
    self.thumbURL = [dict objectForKey:@"image_url"];
    self.ratingURL = [dict objectForKey:@"rating_img_url"];
    self.yelpURL = [dict objectForKey:@"url"];
    self.venueId = [dict objectForKey:@"id"];
    self.reviewsCount =[[dict objectForKey:@"review_count"] stringValue];
    self.categories = [dict objectForKey:@"categories"][0][0];
    self.distance = [dict objectForKey:@"distance"];
    self.price = [dict objectForKey:@"deals.options.formatted_price"];
    self.address = [[[dict objectForKey:@"location"] objectForKey:@"address"] componentsJoinedByString:@", "];
    NSArray *adr = [[dict objectForKey:@"location"] objectForKey:@"display_address"];
    self.displayAddress = [adr componentsJoinedByString:@","];
}
return self;

}

Метод со значениями ответа yelp... Вам нужен только идентификатор. Координаты нужны для вашего местоположения... Когда вы получите некоторые места, посмотрите их идентификатор с помощью журнала или распечатать.

Другие вопросы по тегам