如何在iphone上找到一个城市的经纬度?

Posted

技术标签:

【中文标题】如何在iphone上找到一个城市的经纬度?【英文标题】:How to find the long and lat of a city on the iphone? 【发布时间】:2010-10-17 11:22:54 【问题描述】:

我正在尝试在 iPhone 上查找城市的经纬度。假设用户正在搜索伦敦,我会调用一些函数来检索伦敦的经度和纬度。我在网上查看过,发现您可以使用 Google API,但必须有一个 Apple 函数来处理这个问题?

我遇到了 MKReverseGeocoder,它需要经纬度,并告诉你你在哪个城市附近。例如

// reverse geocode the user location

geocoder = [[[MKReverseGeocoder alloc] initWithCoordinate:mapView.userLocation.location.coordinate] autorelease];

如果它可以逆转这个过程,一定有某种形式的 MKGeocoder 类?

【问题讨论】:

【参考方案1】:

但必须有一个 Apple 函数来处理这个问题

为什么一定要有?因为没有。

您可以使用许多网络服务(例如 Google),或者您可以下载地名数据库(例如 http://www.geonames.org/)并将其导入您的应用程序。最好将其导入 SQL 数据库,然后您可以从您的应用中进行搜索。

【讨论】:

地名数据库比谷歌更可行,因为它可以离线工作。一定有Apple的方式,如果我进入标准的Map APP,我可以搜索London,然后在伦敦市中心的地图上找到漂亮的pin drop?如果他们能做到这一点,我们必须能够使用相同的方法。 苹果可以做很多第三方开发者做不到的事情。我假设苹果使用谷歌的地理编码服务。这是有道理的,因为地图应用无论如何都不能离线工作。 谢谢 Ole,我玩过 Geonames,我很高兴您可以快速简单地获得结果,只需点击 URL geonames.org/search.html?q=london,您就会在第一个结果中获得纬度和经度.您还可以使用数据库下载 (download.geonames.org/export/dump) 并拥有离线版本。【参考方案2】:

见OpenStreetMap。它使您可以更灵活地访问其数据。您可以使用所需的信息预先填充 CoreData 存储。 有一些 api-clients,即route-me 或cloudmade。

【讨论】:

【参考方案3】:

ios5 SDK 添加了对正向和反向地理编码的支持。查看CLGeocoder class 课程以了解更多信息。

【讨论】:

【参考方案4】:

首先,放弃“必须”有 Apple 方式。真的没有。如果您不相信我和我将近 2k 的经验值,请听听 Ole 和他的 13k。

我见过三种服务。

我尝试了 Google 的地理编码 API。这很不错,但有点复杂,而且它们会非常严厉地限制您的查询。

然后我尝试了 MapQuest,我发现它非常出色。下个月左右,我有两个应用程序绑定到应用商店,它们使用 MapQuest 的 API。

然后我找到了 Geonames,我对此印象非常深刻,但还没有机会使用。请注意,Geonames 允许您下载他们的数据,因此如果您确实需要无网络服务,这可能是一个解决方案。

除此之外,您还需要从设备上调用某些内容。顺便说一句,当您使用 MKReverseGeocoder 时,您就是其中之一——它只是 Google 反向地理编码服务的一个包装器。

【讨论】:

以上是关于如何在iphone上找到一个城市的经纬度?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 iPhone 中的地址中查找经纬度

怎样根据GPS获得的经纬度来获取城市名

经纬度纠偏的一些经验

如何根据经纬度来获取城市名

在 iPhone 上将经度/纬度转换为 x/y

如何做一个简单的网页版地图