来自iPhone的正向地理编码

来自iPhone的正向地理编码,iphone,ios,geolocation,geocoding,Iphone,Ios,Geolocation,Geocoding,鉴于mapkit目前不提供正向地理编码功能,有谁能提供帮助,告诉我如何使用搜索栏从用户输入的地址返回纬度和经度坐标。如果有人能提供示例代码,那就太好了。MapKit中没有这样的功能。您最多只能调用第三方web服务。谷歌有一些API来做这件事,我想雅虎也有。但两者都有商业用途的限制,所以请阅读协议。这是当前版本的MapKit的一个已知问题。提交错误报告并复制#6628720,以便他们将修复它作为优先事项 同时,还有来自、通过或的正向地理编码API。我为谷歌的地理编码服务器创建了一个正向地理编码AP

鉴于mapkit目前不提供正向地理编码功能,有谁能提供帮助,告诉我如何使用搜索栏从用户输入的地址返回纬度和经度坐标。如果有人能提供示例代码,那就太好了。

MapKit中没有这样的功能。您最多只能调用第三方web服务。谷歌有一些API来做这件事,我想雅虎也有。但两者都有商业用途的限制,所以请阅读协议。

这是当前版本的MapKit的一个已知问题。提交错误报告并复制#6628720,以便他们将修复它作为优先事项


同时,还有来自、通过或的正向地理编码API。

我为谷歌的地理编码服务器创建了一个正向地理编码API。查看我的博客帖子:
这里还有一个框架:

来自文档的评论: 一个客观的地理编码器和反向地理编码器,主要围绕雅虎的地理编码服务或谷歌的地理API。我为iOS创建了一个简单的正向和反向地理编码器类。它也使用谷歌地理编码API,并返回一个

以下是对地址字符串进行地理编码的方式:

NSString *addressString = @"3245 St-Denis, Montreal"
SVGeocoder *geocodeRequest = [[SVGeocoder alloc] initWithAddress:addressString];
[geocodeRequest setDelegate:self];
[geocodeRequest startAsynchronous];
对CLLocationCoordinate2D对象进行反向地理编码,如下所示:

CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(45.54181, -73.62928);
SVGeocoder *rGeocoderRequest = [[SVGeocoder alloc] initWithCoordinate:coordinate];
[rGeocoderRequest setDelegate:self];
[rGeocoderRequest startAsynchronous];
SVGeocoderDelegate提供以下两种方法:

- (void)geocoder:(SVGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark;
- (void)geocoder:(SVGeocoder *)geocoder didFailWithError:(NSError *)error;

iOS 5现在允许进行正向地理编码:


我希望这有帮助

我在github上的iOS5 CoreLocation框架中使用CLGeocoder做了一些关于正向和反向地理编码的小工作,希望对您有所帮助。

用户重要提示:如果使用谷歌地理编码API,则必须在地图上显示结果。代码很棒,但为什么要在SVGeocoder中导入AddressBook框架?@luyuan,因为MKPlacemark在地址组件中需要它(我认为iOS 5中的CLPlacemark不再是这种情况)@samvermette Thx回复:)是的,IOS 5即时通讯现在对IOS开发者完全无用:来自谷歌TOS:“注意:地理编码API只能与谷歌地图一起使用”用户重要注意:如果你使用谷歌地理编码API,你必须在地图上显示结果。雅虎似乎没有这个限制。你必须在谷歌地图上显示结果。重要区别。需要更新到新的谷歌地理编码API(例如,现在不需要API密钥)。除此之外,他做得很好。谢谢@Merrimack。感谢DenTheMan,但是API同时支持V2和V3(最新版本,没有API密钥)。自从第一次发布以来就一直是这样。答案中的链接已经死了-404没有找到。对于iOS6,这可能是唯一可用的解决方案(除了可能是雅虎),因为我怀疑谷歌是否会对你在苹果地图上覆盖谷歌地理编码数据感到高兴…@kendallhlhelmstettergelner我认为谷歌会接受这一点,但苹果?…也许不是。是谷歌的TOS阻止了它。(非谷歌地图上不显示谷歌地理编码数据)。苹果不在乎你在地图上覆盖的东西的数据从哪里来。既然苹果不再使用谷歌地图数据,那么你可以如何使用MapKit就没有任何限制了。