Openlayers 基于缩放级别显示要素

Openlayers 基于缩放级别显示要素,openlayers,openlayers-3,Openlayers,Openlayers 3,我是openlayers库的新手,我有一个问题。我渲染了很多特征,当地图缩小时,这些特征会相互重叠,这看起来很难看,正如你在第一个屏幕截图上看到的那样。我希望缩小的地图(第一个屏幕)在所有缩放级别上看起来都像放大的地图(第二个屏幕)。最常见的实现方式是什么 以下是一个样式函数的示例,该函数从簇地图图层检测组要素,并为单个对象绘制正方形,为组对象绘制圆形: var styleFunction = function() { return function(feature,resolution)

我是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];
};
};

希望这对您的项目有所帮助

查看
ol.source.Cluster
,它可以限制您在地图上看到的数据量。看到这个例子谢谢,伙计,这就是我需要的我使用它的原因也是一样的。另外,通过使用样式功能,你可以在地图上检测到组特征,并给它们涂上不同的颜色,或者为它们画出不同的形状(我把我的点放大一点以指示组特征)。鼠标悬停也可以提供组功能的所有详细信息。看起来你正在创建一个很酷的帆船比赛跟踪器…太棒了,要把这些功能整合到我的项目中!我正在为破冰船开发一个导航系统,其中还包括一些船只。我对这张地图还不熟悉,所以它非常有用,谢谢!