Вы можете попробовать использовать API поиска места.
http://code.google.com/apis/maps/documentation/places/#PlaceSearches
Они поддерживают тип "ресторан" и "еда".
http://code.google.com/apis/maps/documentation/places/supported_types.html
Таким образом, вы можете удалить панель поиска и вместо этого отправить запрос в google place api с указанием текущего местоположения и types = "restaurant" или types = "restaurant | food".
Вы можете получить результаты в виде данных JSON, которые вы можете легко использовать в своем приложении.
Следующим шагом будет создание аннотаций и добавление их на карту.
__
Вот подробности о первых частях.
Получив эту работу, вы можете перейти к получению API-ключа для Google мест , получить текущую позицию и затем начать добавлять результаты json на карту с помощью аннотаций карты. :)
Асинхронное URL-соединение является самой большой частью здесь. Так что, как только вы это заработаете, вы сможете найти близлежащие места.
Для настройки детали JSON.
Загрузить библиотеку json .. https://github.com/johnezang/JSONKit
Добавьте JSONKit.h и JSONKit.m в ваш проект. (добавить файлы .. или перетащить их поверх)
Добавьте #import "JSONKit.h" (в вашем файле .m)
Посмотрите на последний метод ниже, чтобы узнать, как настроить переменные и получить данные из json.
Для части соединения url ...
На основании: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html
PS: позже вы внесете изменения, чтобы использовать java api-url, api-ключ, текущее местоположение и тип "google" в Google местах (чтобы получить необходимый ответ в json от google).
Создать заявку:
- (void)viewDidLoad
{
// Create the request.
NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/calendar/feeds/developer-calendar@google.com/public/full?alt=json"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
// create the connection with the request
// and start loading the data
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection) {
// Create the NSMutableData to hold the received data.
receivedData = [[NSMutableData data] retain];
} else {
// Inform the user that the connection failed.
}
}
Затем вам нужно реализовать методы делегата .. (скопируйте это в файл .m)
Этот вызывается, когда вы получаете ответ (не фактические данные, следовательно, они сбрасывают его).
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
// This method is called when the server has determined that it
// has enough information to create the NSURLResponse.
// It can be called multiple times, for example in the case of a
// redirect, so each time we reset the data.
[receivedData setLength:0];
}
Этот вызывается при получении данных - может происходить несколько раз, поэтому они добавляют данные каждый раз.
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
// Append the new data to receivedData.
[receivedData appendData:data];
}
Иногда соединение не удается, затем вызывается этот метод делегата - и вы можете представить сообщение пользователю (яблоко говорит, что всегда информирует пользователей о происходящем) ..
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
// release the connection, and the data object
[connection release];
[receivedData release];
// inform the user
NSLog(@"Connection failed! Error - %@ %@",
[error localizedDescription],
[[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);
}
Наконец, этот метод вызывается после успешного завершения соединения. Теперь у вас есть полные данные, и вы сохраняете их в переменную. Здесь мы также помещаем данные в jsonDict.
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
// do something with the data ...
// Your data is now stored in "receivedData",
// set up this mutable variable in the header file, then synthesize.
// in the .h file, inside the @interface block.:
//
// NSMutableData *receivedData;
// NSDictionary *jsonDict;
// }
//
// @protocol (nonatomic, retain) NSMutableData *receivedData;
// @protocol (nonatomic, retain) NSDictionary *jsonDict;
// And in the .m file, under the @implementation line.
// @synthesize receivedData, jsonDict;
// Log to test your connection
NSLog(@"Succeeded! Received %d bytes of data",[receivedData length]);
// Place the received data into a json dictionary
jsonDict = [receivedData objectFromJSONData];
// Get sections from your data
NSString *feed = [jsonDict objectForKey:@"feed"]; // asumes there is only one title in your json data, otherwise you would use an array (with dictionary items) ..look in your feed to find what to use.
// Log your data
NSLog(@"My feed: %@", feed);
// release the connection, and the data object
[connection release];
[receivedData release];
}
Попытайтесь сделать это, тогда мы сможем вернуться к использованию поиска мест и добавлению результатов на карту.