我正在創建一個需要用戶輸入兩個地方(郵政編碼)的應用程序。我的應用程序將計算這兩個點之間的駕駛距離並輸出結果。用戶可以選擇添加Way-Points。 我想我將不得不使用谷歌地圖API並獲取結果的XML文件,然後解析XML文件。任何人都可以幫助我,因爲我不知道如何做到這一點。 感謝所有幫助。計算兩個點之間的距離iphone
例... 開始:BR1 1LR
航點:BR2 0LH
航點:BR3 4AY
目的地:BR1 1LR
我正在創建一個需要用戶輸入兩個地方(郵政編碼)的應用程序。我的應用程序將計算這兩個點之間的駕駛距離並輸出結果。用戶可以選擇添加Way-Points。 我想我將不得不使用谷歌地圖API並獲取結果的XML文件,然後解析XML文件。任何人都可以幫助我,因爲我不知道如何做到這一點。 感謝所有幫助。計算兩個點之間的距離iphone
例... 開始:BR1 1LR
航點:BR2 0LH
航點:BR3 4AY
目的地:BR1 1LR
我知道這真的很晚,但我發佈我的解決方案,以防萬一需要它。
首先,我聲明瞭URL(調用谷歌地圖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];
凡來源,目的地是包含字符串起點和終點。單位可以是@「英制」或@「公制」。 現在,我有了網址,我會找回一個xml字符串。爲了解析這個,我使用了TBXML。關於使用哪個XML Parser總是存在很大的爭議。我使用TBXML,因爲它很容易,並且是fastest。
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;
}
一旦檢查根狀態是OK,則獲得用於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"
但使用方式點,事情工作有點不同,如Jano指出。
距離矩陣API僅限於從收到的數據中呈現Google地圖時才使用。所以在這個使用中,將禁止使用這種方法。 – 2015-03-28 02:56:05
是的,你是對的。它確實需要應用程序顯示谷歌地圖。 https://developers.google.com/maps/documentation/distancematrix/#Limits – SEG 2015-05-07 09:45:00
是的,你可以計算出距離,對於你需要有經緯度來得到距離。目標C提供了計算點間距的方法 這裏是例子......
float distance =[mUserCurrentLocation distanceFromLocation:location1]/1000;
這將爲您提供以公里爲單位的距離。
那麼這將是兩個位置點之間親愛的..... – Sabby 2011-04-25 04:34:02
distanceFromLocation:方法將爲您提供任意兩個CLLocation點之間的絕對距離,而不是駕駛距離。爲此,您必須按照您的懷疑使用Google Maps API。
如果您想要道路距離,您需要詢問Google,然後使用XML解析器和XPath表達式//leg/step/distance/value
解析resulting XML,這將爲您提供所有距離,您將必須求和。有關解析xml和使用XPath表達式,請參閱this。
如果我從這個URL得到xml文件,我認爲它應該工作。只有我不確定哪個是駕駛距離。是/腿/步/距離/價值?它會以千米或英里爲單位嗎? http://maps.googleapis.com/maps/api/directions/xml?origin=Br11LR&destination=BR20LH&waypoints=BR34AY&sensor=false 我應該使用哪種類型的XML解析?例如:NSXMLParser,libxml2等 – SEG 2011-04-25 04:30:12
我會用這個XPath的libxml2:http://cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html,因爲它更快速和更低的內存使用NSXMLParser測量單位在行程/行程/距離/數值元素中指示,即行駛距離。 – Jano 2011-04-26 07:11:07
你需要什麼類型的輸入? – Jaba 2011-04-23 03:59:25
郵政編碼將通過文本字段輸入mand將會計算它們之間的距離 – SEG 2011-04-23 13:17:21