我使用的是Leaflet插件传单控制地理编码器:https://github.com/perliedman/leaflet-control-geocoder
我的目标是按国家=英国和城市=伦敦限制结果。
我目前的代码工作正常,但我也得到了英国境外的结果
var geocoder = L.Control.geocoder({position:'topleft', geocode:'countrycodes=gb'});
geocode.addTo(map);
地理编码使用Nominatim来响应地理编码查询。不确定为什么它不起作用
答案 0 :(得分:0)
我相信你需要写L.Control.Geocoder.nominatim({position:'topleft', geocode:'countrycodes=gb'})
来指明你正在使用Nominatim。
这就是他们在此链接的演示中所做的事情:https://github.com/perliedman/leaflet-control-geocoder/blob/master/demo/index.html
答案 1 :(得分:0)
如果您在不使用nominatim()
的情况下使用地理编码器,则可以按照以下步骤进行国家/地区过滤。我知道循环很丑陋,可以通过映射到对象来更好地解决。只是为了演示。
geocoder.query('pass-a-search-string-criteria', showResult);
function showResult(err, data) {
if (!map) {
map = L.mapbox.map('your-map-id', 'mapbox.streets');
}
if (data.lbounds) {
[].slice.call(data.results.features).forEach(function(place){
[].slice.call(place.context).some(function(ccode, i) {
if (i === 3 && ccode.short_code ==='gb') {
console.log(place.place_name);
}
});
});
map.fitBounds(data.lbounds);
} else if (data.latlng) {
map.setView([data.latlng[0], data.latlng[1]], 13);
}
}