从 iPhone 转发地理编码

发布于 2024-07-29 03:38:13 字数 91 浏览 2 评论 0原文

鉴于目前 Mapkit 不提供正向地理编码功能,任何人都可以提供有关如何使用搜索栏从用户今天输入的地址返回纬度和经度坐标的帮助。 如果有人可以提供示例代码那就太好了。

Given that the mapkit doesn't provide forward geocoding functionality today, can anyone provide help on how I can i use a search bar to return a latitude and longitude coordinate from a user inputted address today. If someone can provide sample code that would be great.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

ぺ禁宫浮华殁 2024-08-05 03:38:13

我为 Google 地理编码服务器创建了一个正向地理编码 API。 查看我的博文:
http://blog.sallarp.com/ipad-iphone-forward-地理编码-api-google/

I've created a forward geocoding API for Google's geocoding server. Check out my blogpost:
http://blog.sallarp.com/ipad-iphone-forward-geocoding-api-google/

淡淡绿茶香 2024-08-05 03:38:13

我创建了 SVGeocoder,一个简单的 iOS 正向反向地理编码器类。 它也使用 Google Geocoding API 并返回 MK地标

这就是对地址​​字符串进行地理编码的方式:

NSString *addressString = @"3245 St-Denis, Montreal"
SVGeocoder *geocodeRequest = [[SVGeocoder alloc] initWithAddress:addressString];
[geocodeRequest setDelegate:self];
[geocodeRequest startAsynchronous];

然后对 CLLocationCooperative2D 对象进行反向地理编码,如下所示:

CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(45.54181, -73.62928);
SVGeocoder *rGeocoderRequest = [[SVGeocoder alloc] initWithCoordinate:coordinate];
[rGeocoderRequest setDelegate:self];
[rGeocoderRequest startAsynchronous];

SVGeocoderDelegate 提供以下 2 种方法:

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

I have created SVGeocoder, a simple forward and reverse geocoder class for iOS. It uses the Google Geocoding API as well and returns an MKPlacemark.

This is how you geocode an address string:

NSString *addressString = @"3245 St-Denis, Montreal"
SVGeocoder *geocodeRequest = [[SVGeocoder alloc] initWithAddress:addressString];
[geocodeRequest setDelegate:self];
[geocodeRequest startAsynchronous];

And you reverse geocode an CLLocationCoordinate2D object like this:

CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(45.54181, -73.62928);
SVGeocoder *rGeocoderRequest = [[SVGeocoder alloc] initWithCoordinate:coordinate];
[rGeocoderRequest setDelegate:self];
[rGeocoderRequest startAsynchronous];

The SVGeocoderDelegate offers these 2 methods:

- (void)geocoder:(SVGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark;
- (void)geocoder:(SVGeocoder *)geocoder didFailWithError:(NSError *)error;
仅此而已 2024-08-05 03:38:13

我在 github 上的 iOS5 CoreLocation 框架中使用 CLGeocoder 做了一些关于正向和反向地理编码的小工作希望它对你有帮助。
https://github.com/Mangesh20/geocoding

I have done some small work on forward and reverse geocoding using CLGeocoder in iOS5 CoreLocation framework on github hope it help you.
https://github.com/Mangesh20/geocoding

把梦留给海 2024-08-05 03:38:13

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

同时,还有来自 Google 地图 的正向地理编码 API,通过Yahoo PlacemakerCloudmade

It's a known issue with the current version of MapKit. File a bugreport and dupe #6628720 so they make fixing it a priority.

In the meantime, there are forward Geocoding APIs from Google Maps, via Yahoo Placemaker, or Cloudmade.

心如荒岛 2024-08-05 03:38:13

这里还有一个框架: https://github.com/tylerhall/CoreGeoLocation

来自文档的评论:
主要围绕雅虎地理编码服务或 Google 地理 API 的客观地理编码器和反向地理编码器。

There is also a framework here: https://github.com/tylerhall/CoreGeoLocation

Comment from docs:
An Objective GeoCoder and Reverse Geocoder wrapping around Yahoo's Geocoding services or Google's Geo APIs primarily.

可遇━不可求 2024-08-05 03:38:13

MapKit 中没有这样的功能。 您能做的最好的事情就是调用第三方网络服务。 谷歌有一些 API 可以做到这一点,我认为雅虎也有。 不过,两者都对商业用途有限制,因此请阅读协议。

There is no such functionality in MapKit. The best you can do is to call a third party web service. Google has some APIs to do this and so had Yahoo I think. Both have restrictions on commercial use though, so read the agreement.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文