Openlayers
Aunque existe una librería de Angular para Openlayers (ng-openlayers), es bastante reciente y no es oficial. En cualquier caso, y como no existe la versión para Angular 19 en el momento de escribir esto, vamos a ver como sería integrar una funcionalidad básica en Angular utilizando la librería de JavaScript por debajo.
Empezaremos instalando laa libreríaa necesarias:
npm i ol @geoapify/geocoder-autocomplete
A continuación importaremos el CSS de las librerías, ya sea en el archivo angular.json o en styles.css.
Creando las directiva para el mapa
Vamos a crear una directiva para el mapa, pero en lugar de un selector de atributo [olMap], tendrá un selector de elemento ol-map. Al igual que un componente puede tener un selector de atributo, una directiva puede ser un elemento. La principal diferencia es que un componente gestiona una plantilla, mientras que la directiva no, solo gestiona el elemento sobre el cual actúa, y en este caso no necesitamos plantilla. Cargaremos el mapa dentro del elemento ol-map.
ng g d ol-maps/ol-map
Como se puede observar, inyectamos la referencia al elemento de la directiva (ol-map) y recibimos las coordenadas y el zoom iniciales como parámetros de entrada. En el constructor creamos el mapa junto a la vista y el objeto VectorLayer asociado (para poder dibujar marcadores por ejemplo).
Además, cada vez que las coordenadas cambian, centramos el mapa. Esto lo hacemos con una función afterRenderEffect en lugar de effect, porque es lo recomendado con librerías que no están integradas con Angular y manipulan del DOM.
Así crearíamos el mapa en el componente correspondiente (sin olvidar el CSS para darle tamaño al mapa):

Creando la directiva para el marcador
A continuación vamos a crear una directiva para el marcador, que tendrá también un selector de elemento y pondremos dentro del elemento de mapa. Los componentes y directivas pueden a su vez inyectar otros componentes y directivas dentro de las cuales estén.
ng g d ol-maps/ol-marker
Como se puede observar, tanto las coordenadas, como los colores son señales de entrada. En cualquier caso solo reaccionamos (afterNextRender) a los cambios de valor en las coordenadas. Pero se podrían crear otra función similar para gestionar el cambio de color si quisiéramos.
Así quedaría un mapa con marcador en el componente donde queramos mostrarlo (se pueden añadir tantos marcadores como se quiera):

Creando la directiva para el buscador
Por último, crearemos una directiva para asociar un campo de búsqueda al mapa y que nos autocomplete. Utilizaremos la librería de @geoapify que hemos instalado antes.
ng g d ol-maps/ga-autocomplete
ng g i ol-maps/search-result
Esta directiva tendrá un parámetro de salida (output) para devolver el resultado de la búsqueda, tanto la dirección como las coordenadas seleccionadas.
Finalmente, así quedaría un mapa completo, con función de búsqueda incluida:
