繁体   English   中英

Leaflet.js:WMS图层样式

[英]Leaflet.js: WMS Layer Styles

我有一个Leaflet javascript Web应用程序,该应用程序使用WMS来调用GeoServer。 返回的对象是Geometry plus属性。 尽管在美国,“几何图形”(多边形)可以很好地渲染为“县”,但是我需要根据县人口来使“县”图层显示不同的颜色。

这是加载WMS数据的代码:

     var wmscounty = L.tileLayer.wms("<?php echo  $geoserverwms_url; ?>", {
        layers: '<?php echo  $geoserverwms_layer_countypop; ?>',
        format: 'image/png',
        transparent: true,
        version: '1.1.1',
        attribution: "countypopulation"
    }
    wmscounty.addTo(map);

我可能会使用的设置图层样式的代码是:

  function getColorCounties(d) {
        return d > 1000000 ? '#800026' :
        d > 50000   ? '#FED976' :
                          '#FFEDA0';
    }
   function styleCounties(feature) {
        return {
            weight: 2,

            fillColor: getColorCounties(feature.properties.COUNTY_POP)
        };
    }

我不知道如何将“功能”对象传递给styleCounties()函数? 是否应该在某些onAdd()函数中? 或一些“ forEach”。 有一些可用的示例,但我找不到任何有关Leaflet / WMS的示例。

谢谢!

我必须说我有点困惑。 WMS是一项从服务器获取栅格图像的服务。 您不会从WMS获取几何或属性。

由于WMS提供栅格图像,因此您无法使用Javascript对其进行样式设置。 因此,您不能仅通过Javascript设置权重,填充颜色等,因为当Javascript看到数据时,数据已经呈现在服务器上。

但是,您可以在WMS请求中设置styles参数,该参数指示WMS服务器(在您的情况下为GeoServer)对返回的图像应用特定的样式。 请参阅GetMap参考: http : //docs.geoserver.org/stable/en/user/services/wms/reference.html#getmap

如果您确实想在客户端上控制样式,则可能应该改用WFS,它将为您提供矢量格式的几何图形和属性。 GeoServer可以用GeoJSON格式返回它们,这使得在Leaflet中轻松使用它们。 您至少可以使用一个插件来实现此目的: https : //github.com/azgs/azgs-leaflet (我自己还没有使用过)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM