从geoJson中提取Feed级别元数据以用作Leaflet消息框

时间:2016-06-13 12:53:28

标签: javascript leaflet geojson

我有一张通过geoJson Feed显示数据的地图 - 例如http://catchingtherain.com/iwm/index.php#lat=51.56981465604131&lng=-1.7135238647460938&zoom=12

Feed基于bbox,但服务器端限制为200个结果(我完全控制geoJson,因为它只是一个简单的php脚本,可以转换solr响应)

当有超过200个结果可用时,我想在传单地图上显示一条消息,例如“显示437项结果中的200项。请放大以查看完整的结果”。我可以通过geoJson响应中的一些顶级元数据向Leaflet提供这些计数,例如

{
    type: "FeatureCollection",
    metadata: {
        count: 200,
        totalCount: 427
    },
    features: [ ...

我的问题是,如何在我的Leaflet代码中提取这两个值,在

附近
iwmMemorials = L.geoJson(null, {
    pointToLayer: function (feature, latlng) {
    ...

示例Feed - http://catchingtherain.com/iwm/data/iwm_memorials.php?bbox=-7.657470703124999,51.3546312303602,-0.472412109375,52.318553202553275

1 个答案:

答案 0 :(得分:1)

在Leaflet的。我看到你有一个看起来像这样的函数:

$.getJSON(url, function (data) {
    iwmMemorials.clearLayers();
    iwmMemorials.addData(data);
    map.addLayer(iwmMemorials);
    if (refresh != 'true') {
      map.fitBounds(iwmMemorials.getBounds(), {paddingTopLeft: [0,15], paddingBottomRight: [80,0]});
      bbox = map.getBounds().toBBoxString();
      console.info('IWM memorials bounds: '+bbox);
    }
});

只需添加如下行:

if (data.features.length > 200) { alert('Too much stuff'); }