我正在使用Codeigniter PHP + jQuery的工作板,雇主进入他们的位置,我们使用Google Maps API绘制它。虽然这具有令人敬畏的可用性结果,但问题是当我们试图向求职者展示这些位置时,他们感到困惑并难以在视觉上辨别(他们读起来像这样:“02905,2英里远”,“171 John St.,4几英里远“,”普罗维登斯,罗德岛,10英里远“。
我希望能够将经度/纬度的地理定位反转到设定级别(理想情况下,城市名称),以便在搜索结果中我可以将列表设置为:“Providence,RI,10英里远“,”普罗维登斯,罗德岛,5英里远“,”克兰斯顿,罗德岛,16英里远“。
有没有办法将地理编码反转到城市?我看到很多关于将地理编码反转到最近的可寻址位置的示例,但无法控制该级别。
希望很清楚!如果您需要澄清任何问题,请随时发表评论。
答案 0 :(得分:37)
免费来源(例如知识共享)
<强>国地名强>
如果您正在寻找免费(自由)来源,可以使用Geonames API findNearbyPlaceName。
例如,以下内容返回最接近的地名:
http://api.geonames.org/findNearbyPlaceName?lat=47.3&lng=9&username=demo
此处提供更多信息
http://www.geonames.org/export/web-services.html#findNearbyPlaceName
<强>游离碱强>
而不是单点,它需要有界框。致电样本:
<强> Geocoder.ca 强>
北美地址的反向地理编码。
映射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=[yourappidhere]
Google Maps API
文档:
http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding
答案 1 :(得分:12)
支持reverse geocoding的Google地理编码器会返回address_components。如果您只想要城市名称,则只需提取标有locality
和political
的地址的组件即可。如果您还想要状态,则会使用administrative_area_level_1
答案 2 :(得分:2)
难道你不能只做完整的地址,然后放弃街道和号码吗?
我会说使用完整地址更有价值,以便获得更准确的距离(即使您只显示城市,州)。
编辑:如果你这样做,至少应该以标准形式返回,然后你可以轻松地将你想要的数据复制出来。
答案 3 :(得分:0)
反向地理编码服务(例如Google,Yahoo和GeoNames)可以很好地用于此目的,但需要注意以下几点:
我运行一个提供大量商业地理Web API的网站,并销售我们为支持这些API而构建的Java库。其中一个(仅覆盖美国)使用美国城镇的正确多边形地图来返回包含查询点的结果。它准确而快速,因此如果这是您系统中的关键任务组件,我建议您查看我们的网站:
特定于从lat / lon查找城市的页面是:
答案 4 :(得分:0)
我正在搜索将lat / long转换为城市的API。看起来这也是这个帖子上的原始问题。
我看到数据“http://download.geonames.org/export/dump/”在另一个stackoverflow线程Given the lat/long coordinates, how can we find out the city/country?上共享,并实现了我自己的Web服务。
您可以在http://scatter-otl.rhcloud.com/location?lat=36&long=-78.9看到它正在运行。只需更改您所在位置的纬度和经度即可。
它部署在OpenShift(RedHat平台)上。长时间闲置后的第一次通话可能需要一段时间,但通常表现令人满意。随意使用此服务...
此外,您可以在https://github.com/turgos/Location找到项目来源。
答案 5 :(得分:0)
Html5地理位置需要用户权限。如果您不想要此行为,可以使用https://geoip-db.com之类的外部提供商。他们提供基于ip-addresses的免费地理定位服务。
试试这个例子:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Geo City Locator</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
</head>
<body >
<div>Country: <span id="country"></span></div>
<div>State: <span id="state"></spa></div>
<div>City: <span id="city"></span></div>
<div>Latitude: <span id="latitude"></span></div>
<div>Longitude: <span id="longitude"></span></div>
<div>IP: <span id="ip"></span></div>
<script>
$.getJSON('https://geoip-db.com/json/geoip.php?jsonp=?')
.done (function(location) {
$('#country').html(location.country_name);
$('#state').html(location.state);
$('#city').html(location.city);
$('#latitude').html(location.latitude);
$('#longitude').html(location.longitude);
$('#ip').html(location.IPv4);
});
</script>
</body>
</html>