如何在iOS中按名称,位置搜索本地商家?

我正在开展项目,我们正在展示本地商业搜索。 我正在使用YELP搜索本地业务。 根据YELP文档,我创建了查询。 但它只根据位置给出结果。

我正在尝试使用Google Place API但未获得所需的结果。

我的YELP请求 – http://api.yelp.com/v2/search/?term=restaurant&location=nyc&limit=20&offset=1我的Google Place API请求 – https://maps.googleapis.com/maps/api/place/ TEXTSEARCH / JSON?查询=酒店+在+ NYC&传感器=真键= AIzaSyCHwd5OgRXdeuTWV46SHdMLq2lXL20t22U

  1. 如何使用任何YELP或Google Place API获取商家名称和位置的结果?
  2. 使用YELP或Google Place API哪个更好?

我使用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=%5BSearchPlaceName%5D+in+%5BCityName%5D&sensor=true&key=AddYourOwnKeyHere

  1. 按给定类型搜索城市中的特定地点:

https://maps.googleapis.com/maps/api/place/textsearch/json?query=%5BSearchPlaceName%5D+in+%5BCityName%5D&type=%5BPlaceType%5D&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搜索后,您必须正确传递api搜索url中的数据。 NSStringWithFormat中url签名的注意事项。 不要忘记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 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响应值的方法……你只需要id。 坐标需要你的位置……当你得到一些场地时,可以通过Log或print看到他们的id。