Разбор сервера по координатам и участку на карте - PullRequest
0 голосов
/ 25 августа 2011

На моем сервере есть php-файл, который выводит имя и местоположение каждого пользователя в формате координат следующим образом:

user1: 34.208495,-83.411488
user2: 34.208434,-83.411443
user3: 34.208456,-83.411467

Я использую это для загрузки и анализа файла:

NSString *myUrl = [NSString stringWithFormat:@"http://mysite.com/users/getlocations.php"];
NSURL *url = [NSURL URLWithString:myUrl];
[myWeb loadRequest:[NSURLRequest requestWithURL:url]];
NSString *string = [myWeb stringByEvaluatingJavaScriptFromString:@"document.documentElement.innerText"];   

NSArray *components = [string componentsSeparatedByString:@"\n"];

[locationArray addObjectsFromArray:components];

И это, чтобы поставить пин-код на карту:

NSMutableArray* points = [[NSMutableArray alloc] initWithCapacity:100];
CLLocationDegrees latitude  = lat;
CLLocationDegrees longitude = longi;
CLLocation* currentLocation = [[[CLLocation alloc] initWithLatitude:latitude longitude:longitude] autorelease];
[points addObject:currentLocation];    

CSMapAnnotation* annotation = nil;
annotation = [[[CSMapAnnotation alloc] initWithCoordinate:[[points objectAtIndex:0] coordinate]
                                           annotationType:CSMapAnnotationTypeImage
                                                    title:username] autorelease];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[mapView addAnnotation:annotation];         
[UIView commitAnimations];

Мне в основном нужно проанализировать файл таким образом, чтобы установить имя пользователя в качестве названия булавки и координаты в качестве координат булавки.

Большое спасибо!

1 Ответ

0 голосов
/ 25 августа 2011

Просто мысль ...

NSString *input = ...the list of user locations....
NSArray *locationArray = [input componentsSeparatedByString:@","];

вместо этого формата, однако: пользователь3: 34.208456, -83.411467

для этого метода требуется следующий формат: user3, 34.208456, -83.411467,

Кроме того, избавьтесь от разрывов. По сути, вы должны сгенерировать файл CSV, а затем создать массив всех значений в массиве. Не идеально, но для получения количества пользователей, например, можно написать:

int numUsers = [locationArray count]/3.0f;

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

Вероятно, было бы лучше и эффективнее использовать какой-нибудь XML-файл. Таким образом, вам не обязательно постоянно хранить все данные о местоположении пользователя в памяти, и анализ будет проще.

EDIT:

Так, например, если вы хотите, чтобы три строки представляли данные пользователя для данного пользователя, вы можете использовать код, подобный следующему:

NSString *username;
float lat;
float lon;


/*
index represents the user from which you are grabbing data.
I'm arbitrarily setting the index to 5, meaning you would get data
for the 5th user listed.
*/
int index = 5;

username = [locationArray objectAtIndex:3*index];
lat = [[locationArray objectAtIndex:3*index+1] floatValue];
lon = [[locationArray objectAtIndex:3*index+2] floatValue];
...