JSFiddle - React, Tailwind, and code Playground

HTML

<div id="map"></div>

CSS

</style>
<script type="text/javascript" src="https://api-maps.yandex.ru/2.1/?lang=ru_RU"></script>
<script src="//yandex.st/jquery/2.2.3/jquery.min.js" type="text/javascript"></script>
<style>
        html, body, #map {
            width: 100%; height: 100%; padding: 0; margin: 0;

JavaScript

ymaps.ready(init);

var placemark, myMap;
// Размер привязан к географическим координатам
var sizePlaceMarkLatLng = 0.2;

function init () {

    myMap = new ymaps.Map('map', {
            center: [55, 37],
            zoom: 10
        }, {
            searchControlProvider: 'yandex#search'
        });
     
    // PLACEMARK из SVG
    var svg = '<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 40 40" preserveAspectRatio="none" width="$[options.width]" height="$[options.height]"><circle cx="20px" cy="20px" r="20px" fill="rgb(255, 0, 0)"/></svg>';
    var size = calcSize();
    placemark = new ymaps.Placemark([55, 37], {}, {
        "iconLayout": ymaps.templateLayoutFactory.createClass(svg, {}),
        "visible": true,
        'iconWidth': size,
        'iconHeight': size,
        'iconOffset': [-size/2, -size/2]
    });
    myMap.geoObjects.add(placemark);

    //При зумировании карты меняем размеры Placemark
    var intervalId = null;
    myMap.events.add('actiontick', function (e) {
      setNewSize();
    });
    myMap.events.add('actionbegin', function (e) {
      intervalId = setInterval(setNewSize, 30);
    });
    myMap.events.add('actionend', function (e) {
      clearInterval(intervalId);
      intervalId = null;		
    });

};

  //Установить новый размер
	function setNewSize() {	
    var size = calcSize();
	  placemark.options.set({
		'iconWidth': size,
		'iconHeight': size,
		'iconOffset': [-size/2, -size/2] 
	  }); 
	}	
  
  // Размер приявязан к географическим координатам.
  // Вычисляем размер в экранных пикселях в зависимости от масштаба карты
  function calcSize() {
    var zoom = myMap.action.getCurrentState().zoom;		
    var startScreenCoord = latLngToScreen(0, 0, zoom);	
    var endScreenCoord = latLngToScreen(sizePlaceMarkLatLng, sizePlaceMarkLatLng, zoom);
    return Math.abs(endScreenCoord[0] - startScreenCoord[0]); 
  }

  // Преобразует географические координаты в экранные
  function latLngToScreen(lat, lng, zoom){
   ...