来自 wkt 字符串的 openlayer 点符号
openlayer point symbol from wkt string
我想表示一系列点,每个点都与它们自己的 wkt 字符串相关联,表示该点在特定缩放级别的形状。
有了地理服务器,我可以很轻松地做到这一点。例如:
* {
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有类似的吗?
如何用动态多边形表示点?
我很想知道如何在 Openlayer 中使用 webGL 执行此操作,如果可能的话,因为我正在处理的数据在地图上包含数千个点。
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;
}
});
我想表示一系列点,每个点都与它们自己的 wkt 字符串相关联,表示该点在特定缩放级别的形状。
有了地理服务器,我可以很轻松地做到这一点。例如:
* {
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有类似的吗? 如何用动态多边形表示点?
我很想知道如何在 Openlayer 中使用 webGL 执行此操作,如果可能的话,因为我正在处理的数据在地图上包含数千个点。
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;
}
});