将纬度/经度转换为城市名称? (反向地理定位)

我正在使用Codeigniter PHP + jQuery的工作板,雇主进入他们的位置,我们使用Google Maps API绘制它。 虽然这具有令人敬畏的可用性结果,但问题是当我们试图向求职者展示这些位置时,他们感到困惑并难以在视觉上辨别(他们读起来像这样:“02905,2英里远”,“171 John St.,4几英里远“,”普罗维登斯,罗德岛,10英里远“。

我希望能够将经度/纬度的地理定位反转到设定的水平(理想情况下,城市名称),以便在搜索结果中我可以将这些位置列为如下所示:“Providence,RI,10英里远”,“普罗维登斯,罗德岛,5英里远“,”克兰斯顿,罗德岛,16英里远“。

有没有办法扭转地理编码到城市? 我看到很多关于将地理编码反转到最近的可寻址位置的示例,但无法控制关卡。

希望很清楚! 如果您需要澄清任何问题,请随时发表评论。

支持反向地理编码的Google Geocoder会返回address_components 。 如果你只想要城市名称,你只需要提取用localitypolitical标记的地址的组成部分。 如果您还想要状态,则会使用administrative_area_level_1进行标记

免费来源(例如知识共享)

GEONAMES

如果您正在寻找免费(自由)源,您可以使用Geonames API findNearbyPlaceName。

例如,以下返回最近的地名:

http://api.geonames.org/findNearbyPlaceName?lat=47.3&lng=9&username=demo

更多信息请点击这里

http://www.geonames.org/export/web-services.html#findNearbyPlaceName

游离碱

而不是单点它需要有界框。 来电样品:

http://api.freebase.com/api/service/geosearch?location=%5B30.2,50.4,30.6,50.8%5D&location_type=/location/citytown&inside=true&indent=1

Geocoder.ca

针对北美地址的反向地理编码。

信息: http : //geocoder.ca/

样本电话: http : //geocoder.ca/?latt = 40.70771000786733&longt = -74.0109443664550&reverse = 1&allna = 1&geoit = xml&corner = 1&jsonp = 1&callback = test

Map Quest API

使用Open Street Map nominatim服务:

http://open.mapquestapi.com/nominatim/v1/search?q=50.4,30.4&format=json

非免费来源

Yahoo PlaceFinder

文档http://developer.yahoo.com/geo/placefinder/

示例电话:

http://where.yahooapis.com/geocode?q=38.898717,+-77.035974&gflags=R&appid=%5Byourappidhere%5D

Google Maps API

文档:

http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding

难道你不能只做完整的地址,然后放弃街道和号码?

我会说使用完整地址更有价值,以便获得更准确的距离(即使你只显示城市,州)。

编辑:如果你这样做,至少它应该以标准forms返回,然后您可以轻松地将您想要的数据重新出现。

反向地理编码服务(例如Google,Yahoo和GeoNames)可以很好地用于此目的,但需要注意以下几点:

  • 虽然我无法确定商业服务是如何运作的,但上次我检查过GeoNames使用最近的兴趣点策略来确定城市。 如果您的查询点稍微靠近两个城市之间的边界,并且GeoNames数据库中最近的条目位于该边界的另一侧,则可能会出现问题。 这实际上在我的经验中发生了很多,所以这不仅仅是一些技术性问题。
  • 此外,如果您担心用户体验,任何Web API解决方案都会增加延迟并降低可靠性。

我运行一个提供大量商业地理Web API的网站,并销售我们为支持这些API而构建的Java库。 其中一个(仅覆盖美国)使用美国城镇的正确多边形地图来返回包含查询点的结果。 它准确而快速,因此如果这是您系统中的关键任务组件,我建议您查看我们的网站:

http://askgeo.com

特定于从lat / lon查找城市的页面是:

http://askgeo.com/database/UsPlace2010

我正在寻找一个将lat / long转换为城市的API。 似乎这是这个post上的原始问题。

我在另一个stackoverflow线程上看到了数据“ http://download.geonames.org/export/dump/ ”。 鉴于纬度/经度坐标,我们怎样才能找到这个城市/国家? ,并实现了我自己的Web服务。

您可以在http://scatter-otl.rhcloud.com/location?lat=36&long=-78.9上看到它正在运行。只需更改您所在位置的纬度和经度即可。

它部署在OpenShift(RedHat平台)上。 长时间闲置后的第一次通话可能需要一段时间,但通常表现令人满意。 随意使用此服务…

此外,您可以在https://github.com/turgos/Location找到项目源。

Html5地理定位需要用户权限。 如果您不想要此行为,可以使用https://geoip-db.com等外部提供程序。 他们提供基于IP地址的免费地理定位服务。

  • JSON: https : //geoip-db.com/json/
  • JSONP: https ://geoip-db.com/json/geoip.php ? jsonp = callback

试试这个例子:

      Geo City Locator    
Country:
State:
City:
Latitude:
Longitude:
IP: