JSFiddle - React, Tailwind, and code Playground
HTML
<script src="http://api-maps.yandex.ru/2.1-dev/?lang=ru-RU&mode=debug"></script>
<div id=map></div>
CSS
html, body, #map {
margin: 0;
padding: 0;
width: 100%;
height: 100%
}
JavaScript
ymaps.ready(function () {
var myMap = new ymaps.Map('map', {
center: [55.751574, 37.573856],
controls: [],
zoom: 9
}),
clusterer = new ymaps.Clusterer({
clusterHideIconOnBalloonOpen: false,
geoObjectHideIconOnBalloonOpen: false
});
clusterer.createCluster = function (center, geoObjects) {
// Создаем метку-кластер с помощью стандартной реализации метода.
var clusterPlacemark = ymaps.Clusterer.prototype.createCluster.call(this, center, geoObjects),
presets = {};
for (var i = 0, l = geoObjects.length; i < l; i++) {
var placemarkPreset = geoObjects[i].options.get('preset');
presets[placemarkPreset] = presets[placemarkPreset] ? presets[placemarkPreset] + 1 : 1;
}
var popularPreset;
for (var preset in presets) {
if (!popularPreset || presets[popularPreset] < presets[preset]) {
popularPreset = preset;
}
}
clusterPlacemark.options.set('preset', popularPreset.replace('Icon', 'ClusterIcons'));
return clusterPlacemark;
};
var getPointData = function (index) {
return {
balloonContentBody: 'балун <strong>метки ' + index + '</strong>',
clusterCaption: 'метка <strong>' + index + '</strong>'
};
},
allowColors = ['red', 'violet', 'yellow'],
getPointOptions = function () {
return {
preset: 'islands#' + allowColors[Math.floor(Math.random() * allowColors.length)] + 'Icon'
};
},
points = [
[55.831903,37.411961], [55.763338,37.565466], [55.763338,37.565466], [55.744522,37.616378], [55.780898,37.642889], [55.793559,37.435983], [55.800584,37.675638], [55.716733,37.589988], [55.775724,37.560840], [55.822144,37.433781], [55.874170,37.669838], [55.716770,37.482338],...