从wkt字符串中提取的开放层点符号

问题描述 投票:0回答:1

我想表示一系列的点,每个点都与自己的wkt字符串相关联,在一定的缩放级别上表示该点的形状。

使用geoserver,我可以很容易地做到这一点。比如说像这样。

* {
   mark: symbol("wkt://MULTILINESTRING((-0.25 -0.25, -0.125 -0.25), (0.125 -0.25, 0.25 -0.25), (-0.25 0.25, -0.125 0.25), (0.125 0.25, 0.25 0.25))");
}

这个符号是相对于一个点的实际坐标而言的 可以通过另一个属性来调整大小

我如何用动态多边形来表示一个点?

我很想知道如何在Openlayer中使用webGL来做这件事,如果可以的话,因为我正在处理的数据包含了地图上成千上万的点。

webgl openlayers geoserver
1个回答
2
投票

OpenLayers的样式有一个几何属性(默认为特征的几何属性,但可以重写),所以如果你有一个WKT几何字符串作为一个点特征的属性,你可以解析它,将它翻译成相对于特征的位置,然后用它来为点设置样式。

var features = [
  new Feature({
    geometry: new Point([50, 50]),
    mark: "MULTILINESTRING((-0.25 -0.25, -0.125 -0.25), (0.125 -0.25, 0.25 -0.25), (-0.25 0.25, -0.125 0.25), (0.125 0.25, 0.25 0.25))"
  })
];

var parser = new WKT();

var style = new Style({
  stroke = new Stroke({
    width: 2,
    color: 'black'
});

var layer = new VectorLayer({
  source : new VectorSource({
    features: features,
  }),
  style: function(feature) {
    var point = feature.getGeometry().getCoordinates();
    var mark = parser.readGeometry(feature.get('mark'));
    mark.translate(point[0], [point[1]);
    style.setGeometry(mark);
    return style;
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.