Как искать местный бизнес по имени, местоположению в 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
- Как получить результат по названию компании и местоположению, а также с помощью YELP или Google Place API?
- Какой из них лучше использовать YELP или Google Place API?
3 ответа
Я решаю свою проблему с помощью Google Places API -
Благодаря этому ответу.
Мы получаем ответ JSON/XML
- Искать Отели возле Город:
- Поиск конкретного места в городе:
- Поиск конкретного места в городе по заданному типу:
- Чтобы получить изображение / иконки для ресторана / места -
Согласно документации.
Мы можем использовать 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... Вам нужен только идентификатор. Координаты нужны для вашего местоположения... Когда вы получите некоторые места, посмотрите их идентификатор с помощью журнала или распечатать.