Javascript OpenLayers 3中的自定义覆盖

Javascript OpenLayers 3中的自定义覆盖,javascript,google-maps-api-3,openlayers-3,gis,custom-overlay,Javascript,Google Maps Api 3,Openlayers 3,Gis,Custom Overlay,目前我正在处理Openlayers 3 我在GoogleMapsJavaScriptAPIv3中使用了自定义覆盖来在地图上添加自定义标记作为HTMLdiv。这些标记被分组并绘制在不同的自定义覆盖图中 现在我试图在OpenLayers 3中实现同样的功能,但是我找不到任何解决方案,因为OpenLayers 3中的覆盖层在一个覆盖层中使用一个标记 我可以在OpenLayers 3中对覆盖进行分组以对标记进行分组吗?或者还有其他选项吗?您有多种可能的选项 A)如果只有一个数据集,那么可以使用样式函数。

目前我正在处理Openlayers 3

我在GoogleMapsJavaScriptAPIv3中使用了自定义覆盖来在地图上添加自定义标记作为HTMLdiv。这些标记被分组并绘制在不同的自定义覆盖图中

现在我试图在OpenLayers 3中实现同样的功能,但是我找不到任何解决方案,因为OpenLayers 3中的覆盖层在一个覆盖层中使用一个标记


我可以在OpenLayers 3中对覆盖进行分组以对标记进行分组吗?或者还有其他选项吗?

您有多种可能的选项

A)如果只有一个数据集,那么可以使用
样式函数。请参见以下内容,更具体地说,参见本节代码:

  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;
    }
  });
var vectorLayer=new ol.layer.Vector({
来源:新ol.source.Vector({
网址:'https://openlayers.org/en/v3.20.1/examples/data/geojson/countries.geojson',
格式:new ol.format.GeoJSON()
}),
样式:功能(特征、分辨率){
style.getText().setText(分辨率<5000?feature.get('name'):“”);
回归风格;
}
});
查看
样式
属性?它可以是一个
ol.style.style
或一个样式函数,如上所示。该函数将地图视图的要素和当前分辨率作为参数接收,并在每次渲染(或重新渲染)要素时调用。返回
ol.style.style
或样式对象数组将使用/this样式渲染特征

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

这里有一个更详细的示例,您可以根据分辨率查看并获得一个动态样式示例。这可以让您更好地了解如何处理功能属性


B)如果您有多个数据集,那么您可以为每个数据集创建一个向量层,并在该层上定义一个唯一的样式对象,这将呈现相同的特征。

我也面临同样的问题。您也可以尝试使用传单.js,但我需要OpenLayers 3中的解决方案。感谢您的回复,但我需要为每个标记使用html div来存储有关标记的信息。我不知道覆盖的样式如何对此有所帮助。如果您查看ol3的矢量示例(答案与此相同),当您将鼠标悬停在显示信息的国家时,您会看到。这些是使用ol.Feature而不是ol.Overlay渲染的。我认为这对你来说是个好办法。