OpenLayers 4 变量图标旋转
OpenLayers 4 variable icon rotation
我从 API 中读取了多种数据源。
此数据具有许多与 API 端点相关的属性,但都有一些共同点,即:
- 伊斯汀
- 北向
- 旋转
- 姓名
由此我生成 GeoJSON 对象(它们都是点特征,我将 Easting/Northing 转换为 lat/Long)并通过一些通用代码在我的地图上渲染每个数据源:
let vectorLayer = new ol.layer.Vector({
source: new ol.source.Vector({
features: (new ol.format.GeoJSON()).readFeatures(featureCollection)
}),
style: style
});
this.map.addLayer(vectorLayer);
这会在我的地图上获取点,我可以通过创建自定义样式来设置它们的样式吗,我使用图像 (.png) 作为点标记。
但是我需要做的是根据数据的旋转属性旋转标记,我不知道该怎么做。
API 中的每个数据点都有自己的旋转角度 - 它们的旋转度数不尽相同。
该系统最初使用 this.map.addOverlay(overlay)
添加每个点,这在测试中很好,但实际上并没有很好地扩展,因为渲染它们的时间太长了。目前我最大的数据集只有不到7000个数据点。
实现此目标的最佳方法是什么?
由于缺乏回应且文档中没有任何明显内容,我得出的结论是您不能这样做...这很遗憾。
所以我改变了策略,基于这个 SO QA 我写了一个包装器来将我的点要素转换为以实际位置为中心点的多边形。然后我可以旋转多边形。
不理想,事实证明我的旋转数据无论如何都是完全无法理解的——它被定义为一个角度,但它既不是度数也不是弧度。
您可以使用样式函数代替静态样式:https://openlayers.org/en/latest/apidoc/ol.html#.StyleFunction
因此,您可以设置每个特征的样式,根据其属性计算旋转。
我从 API 中读取了多种数据源。 此数据具有许多与 API 端点相关的属性,但都有一些共同点,即:
- 伊斯汀
- 北向
- 旋转
- 姓名
由此我生成 GeoJSON 对象(它们都是点特征,我将 Easting/Northing 转换为 lat/Long)并通过一些通用代码在我的地图上渲染每个数据源:
let vectorLayer = new ol.layer.Vector({
source: new ol.source.Vector({
features: (new ol.format.GeoJSON()).readFeatures(featureCollection)
}),
style: style
});
this.map.addLayer(vectorLayer);
这会在我的地图上获取点,我可以通过创建自定义样式来设置它们的样式吗,我使用图像 (.png) 作为点标记。
但是我需要做的是根据数据的旋转属性旋转标记,我不知道该怎么做。
API 中的每个数据点都有自己的旋转角度 - 它们的旋转度数不尽相同。
该系统最初使用 this.map.addOverlay(overlay)
添加每个点,这在测试中很好,但实际上并没有很好地扩展,因为渲染它们的时间太长了。目前我最大的数据集只有不到7000个数据点。
实现此目标的最佳方法是什么?
由于缺乏回应且文档中没有任何明显内容,我得出的结论是您不能这样做...这很遗憾。
所以我改变了策略,基于这个 SO QA
不理想,事实证明我的旋转数据无论如何都是完全无法理解的——它被定义为一个角度,但它既不是度数也不是弧度。
您可以使用样式函数代替静态样式:https://openlayers.org/en/latest/apidoc/ol.html#.StyleFunction
因此,您可以设置每个特征的样式,根据其属性计算旋转。