我有一個iPhone應用程序,我需要找出當前位置(根據城市名稱或可能的地址)。但我無法做到這一點。我可以找出當前的經緯度。如果我提供經緯度,是否有任何Web服務(最好是免費的)可以返回當前位置名稱?使用緯度和經度的位置名稱的Web服務
等待任何答覆。
在此先感謝..
喜悅
我有一個iPhone應用程序,我需要找出當前位置(根據城市名稱或可能的地址)。但我無法做到這一點。我可以找出當前的經緯度。如果我提供經緯度,是否有任何Web服務(最好是免費的)可以返回當前位置名稱?使用緯度和經度的位置名稱的Web服務
等待任何答覆。
在此先感謝..
喜悅
你正在尋找被稱爲Reverse Geocoding的功能。
Here是提供此功能的Web服務的列表。
幾個最受歡迎的是Geonames.org,Google Maps Services API和Batchgeo.com批處理多個座標。
假設你的目標是iPhone OS 3.0或更高版本,你可以使用MKReverseGeocoder
這是MapKit框架的一部分。開發人員文檔包含一個示例項目。 MKReverserGeocoder Class Reference
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];
}
當心:你必須在地圖中使用這些信息顯示在您的應用中以保留在Google TOS中。 – z8000 2010-06-08 14:22:53