Leaflet.js:WMS图层样式(Leaflet.js: WMS Layer Styles)

2019-10-19 19:35发布

我有JavaScript的Web应用程序,它使用WMS做出的GeoServer电话的小册子。 返回的对象是几何加属性。 虽然几何(多边形)渲染罚款县在美国,我需要做的县层显示不同的颜色的基础上,县​​的人口。

下面是代码加载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”。 有一些可用的例子,但我找不到任何的单张/ WMS。

谢谢!

Answer 1:

我必须说,我有点糊涂了。 WMS是服务从服务器获取光栅图像。 你没有得到来自WMS的几何形状或属性。

由于WMS给光栅图像时,不能使用Javascript样式。 所以你不能只是设置重量,填充颜色,等从JavaScript,因为数据已经在服务器上呈现时的Javascript看到它。

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

如果你真的想控制在客户端上的造型,你应该使用WFS相反,它会给你在矢量格式的几何形状和属性。 GeoServer的可以GeoJSON格式导出,这使得它易于在单张与他们一起工作回报他们。 有至少一个插件,你可以使用这个: https://github.com/azgs/azgs-leaflet (我没有用它自己)。



文章来源: Leaflet.js: WMS Layer Styles