Как автоматически найти близлежащие места, используя мое местоположение? - PullRequest
2 голосов
/ 18 сентября 2011

Я ОЧЕНЬ новичок в xcode, но я пытаюсь добиться, когда вы открываете приложение, оно показывает карту, мое местоположение и текущие места, где можно поесть.У меня нет собственной базы данных о местах, где я пытаюсь использовать Google для этой функции.что я смог сделать, так это найти учебник, но у него есть панель поиска, и когда я ищу что-то, он показывает мне, но я хочу, чтобы он автоматически показывал мне и не имел функции поиска.

Возможно ли это?любая помощь / учебник очень ценится.Спасибо

Ответы [ 2 ]

5 голосов
/ 19 сентября 2011

Вы можете попробовать использовать 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.

  1. Загрузить библиотеку json .. https://github.com/johnezang/JSONKit

  2. Добавьте JSONKit.h и JSONKit.m в ваш проект. (добавить файлы .. или перетащить их поверх)

  3. Добавьте #import "JSONKit.h" (в вашем файле .m)

  4. Посмотрите на последний метод ниже, чтобы узнать, как настроить переменные и получить данные из 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];

}

Попытайтесь сделать это, тогда мы сможем вернуться к использованию поиска мест и добавлению результатов на карту.

1 голос
/ 12 сентября 2013

См. Следующую ссылку http://www.raywenderlich.com/13160/using-the-google-places-api-with-mapkit

Ссылка показывает разработку с нуля проекта API карты

...