OpenLayer 3 - GeoJSON - 功能为空

时间:2018-06-01 10:03:31

标签: javascript openlayers openlayers-3

我正在尝试按坐标获取国家/地区字符串,但功能为空。

为什么功能为空?我怎么能解决它?

我使用onclick event.pixel 测试了它确实返回了功能但我使用 map.getPixelFromCoordinate 来获得像素功能变为空< / p>

prop

这不起作用

var vectorLayer = new ol.layer.Vector({
    source: new ol.source.Vector({
        url: 'https://openlayers.org/en/v4.6.5/examples/data/geojson/countries.geojson',
        format: new ol.format.GeoJSON()
    })
});

var map = new ol.Map({
    layers: [ vectorLayer],
    target: 'map',
    view: new ol.View({
        center: [0, 0],
        zoom: 1
    }),
    logo:false
  });

1 个答案:

答案 0 :(得分:0)

这是因为在调用postrender事件时,功能加载尚未完成。您可以在vectorLayer上使用postcompose事件。如果功能变得更复杂,我建议使用ol.source.Vector的{​​{3}}功能。

vectorLayer.on('postcompose', function () {
    var pixel = map.getPixelFromCoordinate(ol.proj.fromLonLat([-0.0508, 51.5160]));
    var feature = map.forEachFeatureAtPixel(pixel, function (feature) {
        return feature;
    });
    console.log("Country:"+feature.get("name"));
});

此外,您似乎正在传递需要转换为EPSG:4326的{​​{1}}坐标(默认情况下由OpenLayers使用)。