//You can get your access_token if needed from mapbox.com
var access_token = '?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw';
var urlInit = 'https://api.mapbox.com/geocoding/v5/';
var mode = 'mapbox.places/';
var type = '&types=neighborhood';
$('#go').click(function() {
$('#result').html('');
lonlatInput = $('#lonlat').val();
lonlatInput = lonlatInput.split(',');
lonlat = lonlatInput[0].trim() + '%2C' + lonlatInput[1].trim() + '.json';
getNeighborhood(lonlat);
});
function getNeighborhood(lonlat) {
var url = urlInit + mode + lonlat + access_token + type;
$.ajax({
type: 'GET',
url: url,
success: function(rgeo) {
var result = rgeo;
var neighborhood = rgeo.features[0].text;
$('#result').html(neighborhood);
},
error: function(rgeo) {
console.log(rgeo);
}
});
}
#result {
padding: 10px;
font-size: 2em;
color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" value="-73.945462,40.830182" id="lonlat" />
<button id="go">Geocode</button>
<div id="result"></div>
请在JsFiddle中查看此示例
您的目标有几种解决方案,例如CartoDB集成、Bing位置API、geopy、geocoder、SmartyStreets API等。
让我们使用CartoDB来探索:
创建一个包含纽约市经纬度坐标的文件。
使用Zillow提供的纽约市社区几何文件。
将文件上传到Cartodb,并将经度和纬度坐标作为几何对象进行地理编码。
在文件内运行以下SQL查询:
SELECT a.*,
b.neighborhood
FROM inputFileName
as a,
nyc_pediacities_neighborhoods_v3_polygon as b
WHERE ST_Within(a.the_geom,b.the_geom)
inputFile
作为 a
,shapefile
作为 b
,然后使用 WHERE 子句将几何图形相互匹配。geopy
也值得关注。请查看 this
您可以使用 Bing Location API 实现相同的结果。请参见 API
构建自己的API是另一个可行的解决方案。