2013-10-04 3 views
0

Я создаю приложение на основе MapKit. Я хочу создать определенное количество контактов (скажем, 20), и теперь я задаю эти координаты кодом. Например, в моем файле реализации:iOS MapKit создание загрузки контактов из внешнего файла

#define PIN1_LATITUDE 43.504156 
#define PIN1_LONGITUDE 12.343405 

#define PIN2_LATITUDE 43.451696 
#define PIN2_LONGITUDE 12.488599 

и т. Д. Для всех 20 значений. Проблема в том, что я хотел бы загружать и отображать различные наборы из 20 контактов на основе определенного параметра. Поэтому я хотел бы сохранить координаты булавки во внешнем файле и загрузить 1 вовремя.

можно это сделать? какую структуру я должен использовать? Спасибо!

ответ

0

Создать пользовательский объект Класс для булавки и других данных. и сохраните их в массиве или словаре. И используйте, когда вам нужно. Вы также можете использовать постоянное хранилище.

.h

@interface MapAnnotation : NSObject 
@property(nonatomic, assign) double latitude; 
@property(nonatomic, assign) double longitude; 
@property (nonatomic)   int Id; 
@end 

.m

@interface MapAnnotation 
     @synthesize latitude,longitude,Id; 
    @end 

viewcontroller.m

NSMutableArray *annotationarray = [NSMutableArray alloc]init]; 

MapAnnotation *newAnnoataion = [[MapAnnotation allo]init]; 
newAnnoataion.latitude = 49.05678; 
newAnnoataion.longitude = 69.05678; 
newAnnoataion.id = 1; 
[annotationarray addObject newAnnoataion]; 
+0

Я не понимаю, можете ли вы привести несколько примеров? – carlodonz

+0

Нравится это вы можете создать. – Vinodh

0
  • Создайте файл PLIST или файл JSon для 20 контактов лат & LNG ценит
  • Вам потребуется JSONKit lib или предпочтительно ИОС рамки класса NSJSONSerialization, если приложение предназначается iOS5, а затем
  • Добавить файл в папку проекта ресурсов
  • написать код, который будет загружать файл ресурсов

Вот пример, как это сделать, используя JSONKit

Создайте файл json, скопируйте следующий образец json в файл poi_data.json, загрузите json-файл.

{ 
     "poi": [ 
      { 
       "id": "1", 
       "lat": "43.668997", 
       "lng": "-79.385093" 
      }, 
      { 
       "id": "1", 
       "lat": "43.668997", 
       "lng": "-79.385093" 
      }, 
      { 
       "id": "1", 
       "lat": "43.668997", 
       "lng": "-79.385093" 
      } 
     ] 
    } 



    - (void)loadDataFromFile { 
     NSString* path = [[NSBundle mainBundle] pathForResource:@"poi_data" 
                 ofType:@"json"]; 
     NSString* content = [NSString stringWithContentsOfFile:path 
                 encoding:NSUTF8StringEncoding 
                 error:NULL]; 

     NSDictionary *poiCollection = [content objectFromJSONStringWithParseOptions:JKParseOptionUnicodeNewlines | JKParseOptionLooseUnicode error:nil]; 



      NSArray* pois = [result objectForKey:@"poi"]; 
       for (NSInteger i = 0; i < [pois count]; i++) { 

        NSDictionary* node = (NSDictionary*)[poi objectAtIndex:i]; 

        CGFloat lat = [[node objectForKey:@"lat"] doubleValue]; 
        CGFloat lng = [[node objectForKey:@"lng"] doubleValue]; 
      } 
} 
  • Вы также можете использовать PLIST и загрузить в NSDictionary, PLIST очень хорошо поддерживается в Cocoa Touch.

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/PropertyLists/QuickStartPlist/QuickStartPlist.html#//apple_ref/doc/uid/10000048i-CH4-SW5

Не забудьте запустить код загрузки данных в фоновом потоке или NSOperation блока, ваше приложение, возможно, приведет к краху - выброшены на трамплине - за слишком долго, чтобы загрузить.