Я знаю, что это действительно поздно, но я публикую свое решение на этот случай, если кому-то это понадобится.
Во-первых, я объявил URL (тот, который вызывает google maps api)
#define DST_API @"http://maps.googleapis.com/maps/api/distancematrix/xml?origins=%@&destinations=%@&units=%@&sensor=false"
Далее я создал строку, содержащую этот URL:
NSString *URL = [NSString stringWithFormat:DST_API, source, destination, units];
Где источником, местом назначения являются строки, содержащие начальную и конечную точки.единицы могут быть @ "имперскими" или @ "метрическими".Теперь, когда у меня был URL, я бы вернул строку XML.Чтобы разобрать это, я использовал TBXML.Всегда идет большая дискуссия о том, какой XML Parser использовать.Я использовал TBXML , поскольку это было легко, и это самый быстрый .
TBXML *directionsParser = [[TBXML alloc] initWithURL:[NSURL URLWithString:URL]];
// Check if the Overall status is OK
TBXMLElement *root = directionsParser.rootXMLElement;
TBXMLElement *element = [TBXML childElementNamed:@"status" parentElement:root];
NSString *value = [TBXML textForElement:element];
if ([value caseInsensitiveCompare:@"OK"] != NSOrderedSame) {
[directionsParser release];
return result;
}
После проверки состояния root в порядке, затем получите результат для выражения XPath: // строка / элемент / расстояние / значение
element = [TBXML childElementNamed:@"row" parentElement:root];
element = [TBXML childElementNamed:@"element" parentElement:element];
element = [TBXML childElementNamed:@"status" parentElement:element];
value = [TBXML textForElement:element];
// Check if the Element status is OK
if ([value caseInsensitiveCompare:@"OK"] != NSOrderedSame) {
[directionsParser release];
return result;
}
element = element->parentElement;
element = [TBXML childElementNamed:@"distance" parentElement:element];
//Note if you want the result as text, replace 'value' with 'text'
element = [TBXML childElementNamed:@"value" parentElement:element];
NSString *result = [TBXML textForElement:element];
[directionsParser release];
//Do what ever you want with result
Если кто-то хочет, чтобы URL содержал путевые точки, то здесь это
#define DIR_API @"http://maps.googleapis.com/maps/api/directions/xml?origin=%@&destination=%@&waypoints=%@&units=%@&sensor=false"
Но для использования путевых точек,как указал Джано, все работает немного по-другому.