目前我正在开发 Openlayers 3。
我在 Google 地图 Javascript api v3 中使用自定义叠加层将自定义标记添加为地图上的 html div。这些标记被分组并绘制在不同的自定义叠加层中。
现在我试图在 OpenLayers 3 中实现相同的功能,但我找不到任何解决方案,因为 OpenLayers 3 中的叠加层在一个叠加层中采用了一个标记。
我可以在 OpenLayers 3 中对叠加层进行分组以便对标记进行分组吗?或者还有其他选择吗?
目前我正在开发 Openlayers 3。
我在 Google 地图 Javascript api v3 中使用自定义叠加层将自定义标记添加为地图上的 html div。这些标记被分组并绘制在不同的自定义叠加层中。
现在我试图在 OpenLayers 3 中实现相同的功能,但我找不到任何解决方案,因为 OpenLayers 3 中的叠加层在一个叠加层中采用了一个标记。
我可以在 OpenLayers 3 中对叠加层进行分组以便对标记进行分组吗?或者还有其他选择吗?
您有多种可能的选择。
A)如果您只有一个数据集,那么您可以使用StyleFunction
. 请参阅这个ol3 向量示例,更具体地说是这段代码:
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()
。在功能中使用尽可能多的属性,您可以返回一个独特的样式对象数组。
这是一个更复杂的 ol3 示例,其中包含样式功能,您可以查看并根据分辨率提供动态样式示例。这可以让您更好地了解可以使用特征属性做什么。
B)如果您有多个数据集,那么您可以为每个数据集创建一个矢量图层,并在该层上定义一个独特的样式对象,这将呈现所有相同的特征。