Leaflet Geocoder按国家/地区限制结果

时间:2014-09-08 14:20:36

标签: javascript geocoding leaflet

我使用的是Leaflet插件传单控制地理编码器:https://github.com/perliedman/leaflet-control-geocoder

我的目标是按国家=英国和城市=伦敦限制结果。

我目前的代码工作正常,但我也得到了英国境外的结果

var geocoder = L.Control.geocoder({position:'topleft', geocode:'countrycodes=gb'});
geocode.addTo(map);

地理编码使用Nominatim来响应地理编码查询。不确定为什么它不起作用

2 个答案:

答案 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);
  }
}