目前我正在开发Openlayers 3.
我在Google地图Javascript api v3中使用自定义叠加层在地图上添加自定义标记作为html div。这些标记被分组并绘制在不同的自定义叠加层中。
现在我正在尝试在OpenLayers 3中实现相同的功能,但我找不到任何解决方案,因为OpenLayers 3中的叠加层在一个叠加层中需要一个标记。
我可以在OpenLayers 3中对叠加层进行分组以对标记进行分组吗?或者还有其他选择吗?
答案 0 :(得分:0)
您有多种可能的选择。
A)如果您只有一个数据集,则可以使用StyleFunction
。请参阅此ol3 vector example,更具体地说,请参阅以下代码部分:
var vectorLayer = new ol.layer.Vector({
source: new ol.source.Vector({
url: 'https://openlayers.org/en/v3.20.1/examples/data/geojson/countries.geojson',
format: new ol.format.GeoJSON()
}),
style: function(feature, resolution) {
style.getText().setText(resolution < 5000 ? feature.get('name') : '');
return style;
}
});
查看style
属性?它可以是ol.style.Style
或样式函数,如上所示。该函数接收地图视图的特征和当前分辨率作为参数,并在每次渲染(或重新渲染)特征时调用。返回ol.style.Style
或样式对象数组将使用/这些样式呈现该特征。
该功能可以具有唯一属性,即feature.getProperties()
。在要素中使用尽可能多的属性,您可以返回唯一样式对象的唯一数组。
您可以查看更多complex ol3 example featuring style functions,并根据分辨率获得动态样式示例。这可以让您更好地了解可以使用要素属性执行的操作。
B)如果您有多个数据集,那么您可以为每个数据集创建一个矢量图层,并在图层上定义一个唯一的样式对象,这将使所有要素呈现同样的。