diff --git a/src/ol/control/attribution.js b/src/ol/control/attribution.js index 0963d4060f..2fce9c8735 100644 --- a/src/ol/control/attribution.js +++ b/src/ol/control/attribution.js @@ -182,11 +182,21 @@ ol.control.Attribution.prototype.getSourceAttributions = function(frameState) { } else { intersectsTileRange = false; } + var attributionAlreadyAdded = false; if (intersectsTileRange) { if (sourceAttributionKey in hiddenAttributions) { delete hiddenAttributions[sourceAttributionKey]; } - attributions[sourceAttributionKey] = sourceAttribution; + for (var existingKey in attributions) { + if (attributions.hasOwnProperty(existingKey)) { + if (attributions[existingKey].getHTML() === sourceAttribution.getHTML()) { + attributionAlreadyAdded = true; + } + } + } + if (!attributionAlreadyAdded) { + attributions[sourceAttributionKey] = sourceAttribution; + } } else { hiddenAttributions[sourceAttributionKey] = sourceAttribution; }