OpenLayers 3

时间:2017-01-02 06:03:58

标签: javascript google-maps-api-3 openlayers-3 gis custom-overlay

目前我正在开发Openlayers 3.

我在Google地图Javascript api v3中使用自定义叠加层在地图上添加自定义标记作为html div。这些标记被分组并绘制在不同的自定义叠加层中。

现在我正在尝试在OpenLayers 3中实现相同的功能,但我找不到任何解决方案,因为OpenLayers 3中的叠加层在一个叠加层中需要一个标记。

我可以在OpenLayers 3中对叠加层进行分组以对标记进行分组吗?或者还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

您有多种可能的选择。

A)如果您只有一个数据集,则可以使用StyleFunction。请参阅此ol3 vector example,更具体地说,请参阅以下代码部分:

  var vectorLayer = new ol.layer.Vector({
    source: new ol.source.Vector({
      url: 'https://openlayers.org/en/v3.20.1/examples/data/geojson/countries.geojson',
      format: new ol.format.GeoJSON()
    }),
    style: function(feature, resolution) {
      style.getText().setText(resolution < 5000 ? feature.get('name') : '');
      return style;
    }
  });

查看style属性?它可以是ol.style.Style或样式函数,如上所示。该函数接收地图视图的特征和当前分辨率作为参数,并在每次渲染(或重新渲染)特征时调用。返回ol.style.Style或样式对象数组将使用/这些样式呈现该特征。

该功能可以具有唯一属性,即feature.getProperties()。在要素中使用尽可能多的属性,您可以返回唯一样式对象的唯一数组。

您可以查看更多complex ol3 example featuring style functions,并根据分辨率获得动态样式示例。这可以让您更好地了解可以使用要素属性执行的操作。

B)如果您有多个数据集,那么您可以为每个数据集创建一个矢量图层,并在图层上定义一个唯一的样式对象,这将使所有要素呈现同样的。