我有一个 Leaflet javascript Web 应用程序,它使用 WMS 来调用 GeoServer。返回的对象是Geometry加上属性。虽然几何图形(多边形)可以像美国的县一样渲染良好,但我需要根据县人口使县图层显示不同的颜色。
以下是加载 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)
};
}
我不知道如何将“feature”对象传递给 styleCounties() 函数?它应该在某个 onAdd() 函数中吗?或者一些“forEach”。有一些可用的示例,但我找不到 Leaflet/WMS 的任何示例。
Thanks!
我必须说我有点困惑。 WMS 是一项获取服务raster来自服务器的图像。您无法从 WMS 获取几何图形或属性。
由于 WMS 提供光栅图像,因此您无法使用 Javascript 对其进行样式设置。因此,您不能仅从 Javascript 设置权重、填充颜色等,因为当 Javascript 看到数据时,数据已经在服务器上呈现。
但是,您可以设置styles
WMS 请求中的参数,指示 WMS 服务器(在您的例子中为 GeoServer)对返回的图像应用某种样式;请参阅 GetMap 参考:http://docs.geoserver.org/stable/en/user/services/wms/reference.html#getmap http://docs.geoserver.org/stable/en/user/services/wms/reference.html#getmap.
如果您确实想控制客户端上的样式,您可能应该使用 WFS,它将为您提供矢量格式的几何图形和属性。 GeoServer 可以以 GeoJSON 格式返回它们,这使得在 Leaflet 中使用它们变得很容易。至少有一个插件可以用于此目的:https://github.com/azgs/azgs-leaflet https://github.com/azgs/azgs-leaflet(我自己没用过)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)