Ответ 1
Что вам больше всего понравилось (CLLocationCoordinate2DMake) правильно. Вы просто забыли включить структуру CoreLocation в свой проект.
И, как указывали другие, ваш файл lat/lon в вашем файле, вероятно, не является целым числом.
Мне плохо, когда я спрашиваю об этом, потому что кажется, что это такая простая вещь, что можно повесить трубку, но я посмотрел на каждый подходящий ресурс, который я мог, и попытался использовать множество комбинаций решений, которые я видел других использовать, и ничего не сработало...
Я пытаюсь выполнить итерацию через некоторый XML, который я получаю и анализирую Локатор и Долгота координаты в XML, и сохраняю его в массиве, из которого я буду его строить.
Моя проблема заключается в том, что независимо от того, какой тип я использую, как я его использую, что у вас, xcode ВСЕГДА находит какую-то проблему с ним.
Соответствующая часть моего файла .h:
CLLocationCoordinate2D Coord;
CLLocationDegrees lat;
CLLocationDegrees lon;
@property (nonatomic, readwrite) CLLocationCoordinate2D Coord;
@property (nonatomic, readwrite) CLLocationDegrees lat;
@property (nonatomic, readwrite) CLLocationDegrees lon;
Соответствующая часть моего файла .m:
else if ([elementName isEqualToString:@"Lat"]) {
checkpoint.lat = [[attributeDict objectForKey:@"degrees"] integerValue];
}
else if ([elementName isEqualToString:@"Lon"]) {
checkpoint.lon = [[attributeDict objectForKey:@"degrees"] integerValue];
}
else if ([elementName isEqualToString:@"Coord"]) {
checkpoint.Coord = [[CLLocation alloc] initWithLatitude:checkpoint.lat longitude:checkpoint.lon];
}
Текущая ошибка, которую я получаю, это: "Назначение" CLLocationCoordinate2D из несовместимого типа "id". Я полагаю, что это означает, что возвращаемое значение функции инициализации неверно, но я не знаю, почему, поскольку его встроенная функция...
Я также пробовал то, что было бы для меня самым лучшим, что я видел, как кто-то еще делает:
checkpoint.Coord = CLLocationCoordinate2DMake(checkpoint.lat, checkpoint.lon);
Пока это не дает немедленных ошибок, когда я пытаюсь создать и запустить, это дает мне:
Undefined символы для архитектуры i386: "_CLLocationCoordinate2DMake", на который ссылаются: - [XMLParser parser: didStartElement: namespaceURI: qualifiedName: attributes:] в Checkpoint.o ld: символ не найден для архитектуры i386 collect2: ld возвращен 1 статус выхода
Любая помощь/разъяснение/подталкивание в правильном направлении было бы очень оценено, потому что на данный момент я очень не в курсе.
Что вам больше всего понравилось (CLLocationCoordinate2DMake) правильно. Вы просто забыли включить структуру CoreLocation в свой проект.
И, как указывали другие, ваш файл lat/lon в вашем файле, вероятно, не является целым числом.
что я сделал: сначала создайте CLLocationCoordinate2D:
CLLocationCoordinate2D c2D = CLLocationCoordinate2DMake(CLLocationDegrees latitude, CLLocationDegrees longitude);
моя широта и долгота являются двойными типами.
в ваших Импортах обязательно импортируется библиотека Mapkit.
#import <MapKit/MapKit.h>
Это должно работать.
CLLocationCoordinate2D center;
.....
else if ([elementName isEqualToString:@"Lat"]) {
center.latitude = [[attributeDict objectForKey:@"degrees"] doubleValue];
}
else if ([elementName isEqualToString:@"Lon"]) {
center.longitude = [[attributeDict objectForKey:@"degrees"] doubleValue];
}
попробуйте изменить
[[attributeDict objectForKey:@"degrees"] integerValue]
в
[[attributeDict objectForKey:@"degrees"] floatValue]
и
checkpoint.Coord = [[CLLocation alloc] ....
не может быть правильным, поскольку вы определили координату как CLLocationCoordinate2D, которая
что вам нужно сделать:
CLLocationCoordinate2D coordinate;
else if ([elementName isEqualToString:@"Lat"]) {
coordinate.latitude = [[attributeDict objectForKey:@"degrees"] floatValue];
}
else if ([elementName isEqualToString:@"Lon"]) {
coordinate.longitude = [[attributeDict objectForKey:@"degrees"] floatValue];
}
checkpoint.Coord = coordinate;