基于缩放级别显示功能
Displaying features based on zoom level
我是 openlayers 库的新手,我有一个问题。我渲染了很多要素,当地图缩小时,要素相互重叠,看起来很丑陋,正如您在第一个屏幕截图中看到的那样。我希望缩小的地图(第一个屏幕)在所有缩放级别看起来都像放大的地图(第二个屏幕)。最常见的实施方式是什么?
下面是一个样式函数示例,它从聚类地图图层中检测组特征,并为单个对象绘制正方形,为组对象绘制圆圈:
var styleFunction = function() {
return function(feature,resolution) {
var style;
var radius;
var offsetY = -26;
var gotGroup = false;
var features = feature.get('features');
if (features.length == 1) { //length = 1 - individual object instead of combo object
style = new ol.style.Style({
image: new ol.style.RegularShape({
radius: 10,
points: 4,
angle: Math.PI / 4,
fill: createFillStyle(feature),
stroke: createStrokeStyle(feature,resolution,props)
}),
text: createTextStyle(feature, resolution, props)
});
} else {
var rad = 11;
if (features.length > 1) { //If group of features increase radius of object
rad = 12;
gotGroup = true;
}
style = new ol.style.Style({
image: new ol.style.Circle({
radius: rad,
fill: createFillStyle(feature),
stroke: createStrokeStyle(feature,resolution,props)
}),
text: createTextStyle(feature, resolution, props)
});
}
return [style];
};
};
希望这对您的项目有所帮助
我是 openlayers 库的新手,我有一个问题。我渲染了很多要素,当地图缩小时,要素相互重叠,看起来很丑陋,正如您在第一个屏幕截图中看到的那样。我希望缩小的地图(第一个屏幕)在所有缩放级别看起来都像放大的地图(第二个屏幕)。最常见的实施方式是什么?
下面是一个样式函数示例,它从聚类地图图层中检测组特征,并为单个对象绘制正方形,为组对象绘制圆圈:
var styleFunction = function() {
return function(feature,resolution) {
var style;
var radius;
var offsetY = -26;
var gotGroup = false;
var features = feature.get('features');
if (features.length == 1) { //length = 1 - individual object instead of combo object
style = new ol.style.Style({
image: new ol.style.RegularShape({
radius: 10,
points: 4,
angle: Math.PI / 4,
fill: createFillStyle(feature),
stroke: createStrokeStyle(feature,resolution,props)
}),
text: createTextStyle(feature, resolution, props)
});
} else {
var rad = 11;
if (features.length > 1) { //If group of features increase radius of object
rad = 12;
gotGroup = true;
}
style = new ol.style.Style({
image: new ol.style.Circle({
radius: rad,
fill: createFillStyle(feature),
stroke: createStrokeStyle(feature,resolution,props)
}),
text: createTextStyle(feature, resolution, props)
});
}
return [style];
};
};
希望这对您的项目有所帮助