2010-05-13 94 views
1

我有一個iPhone應用程序,我需要找出當前位置(根據城市名稱或可能的地址)。但我無法做到這一點。我可以找出當前的經緯度。如果我提供經緯度,是否有任何Web服務(最好是免費的)可以返回當前位置名稱?使用緯度和經度的位置名稱的Web服務

等待任何答覆。

在此先感謝..

喜悅

回答

1

假設你的目標是iPhone OS 3.0或更高版本,你可以使用MKReverseGeocoder這是MapKit框架的一部分。開發人員文檔包含一個示例項目。 MKReverserGeocoder Class Reference

+0

當心:你必須在地圖中使用這些信息顯示在您的應用中以保留在Google TOS中。 – z8000 2010-06-08 14:22:53

0

MKReverseGeocoder是一個偉大的階級,但有時可能會返回錯誤: 錯誤域= PBRequesterErrorDomain代碼= 6001「操作無法完成(PBRequesterErrorDomain錯誤6001)

上述luvieere的建議是一個偉大的地方。開始,這正是我一樣使用谷歌的HTTP和反向地理編碼器的例子這裏是我實施GoogleReverseGeocoder類我寫的關於如何使用它的完整的解釋可以發現HERE

// Send Google A Request 
NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%lf,%lf&output=csv&sensor=false",self.locationToGeocode.coordinate.latitude,self.locationToGeocode.coordinate.longitude]; 
NSURL *urlFromString = [NSURL URLWithString:urlString]; 
NSStringEncoding encodingType = NSUTF8StringEncoding; 
NSString *reverseGeoString = [NSString stringWithContentsOfURL:urlFromString encoding:encodingType error:nil]; 

// Parse Out Response 
NSArray *listItems = [reverseGeoString componentsSeparatedByString:@","]; 
NSArray *tempAddressArray = [[listItems objectAtIndex:2] componentsSeparatedByString:@"\""]; 
NSArray *tempCountryArray = [[listItems objectAtIndex:[listItems count]-1] componentsSeparatedByString:@"\""]; 

// Did Google Find Address? 200 is yes 
if ([[listItems objectAtIndex:0] intValue] == 200) 
{ 
    // Set Class Member Variables 
    [self setGoogleReturnDidFindAddress:YES]; 
    [self setGoogleReturnAddress:[tempAddressArray objectAtIndex:[tempAddressArray count]-1]]; 
    [self setGoogleReturnCountry:[tempCountryArray objectAtIndex:0]]; 
    [self setGoogleReturnCode:[[listItems objectAtIndex:0] intValue]]; 
    [self setGoogleReturnAccuracy:[[listItems objectAtIndex:1] intValue]]; 

} else if ([[listItems objectAtIndex:0] intValue] > 600) 
{ 
    [self setGoogleReturnDidFindAddress:NO]; 
} 
相關問題