1 votos

¿Cómo añado una clase CSS personalizada a una imagen superpuesta en Leaflet?

He estado utilizando con bastante frecuencia imageOverlay de Leaflet para superponer imágenes en un panel de mapa de Leaflet. Ahora me gustaría aplicar un CSS personalizado a la imagen superpuesta de forma dinámica. Me encontré con el post de Raphael en Cómo añadir una clase CSS personalizada a leaflet tilelayer . ¿Cómo extiendo este método a una capa de imagen? He intentado lo siguiente usando el ejemplo de IvanSanchez pero no he conseguido que funcione. Intentaba aplicar el filtro CSS: grayscale(100%) tanto a los mosaicos de debajo como a la imagen superpuesta (una piña). Los azulejos y las líneas de la cuadrícula se convirtieron en escala de grises, pero no la imagen superpuesta de la piña.

<!DOCTYPE html>
<html>
<head>
<link href="https://leafletjs-cdn.s3.amazonaws.com/content/leaflet/master/leaflet.css" rel="stylesheet" type="text/css" />
<script src="https://leafletjs-cdn.s3.amazonaws.com/content/leaflet/master/leaflet.js"></script>
<meta charset="utf-8">
<title>Leaflet JS Bin</title>
<style>
#map {
  width:600px;
  height:400px;
}

.leaflet-layer.foobar img {
  border: 5px solid red;
  filter: grayscale(100%);
}

</style>
</head>
<body>
<div id='map'></div>

<script>
var myCenter = new L.LatLng(50.5, 30.51);
var map = new L.Map('map', {center: myCenter, zoom: 1});

var positron = L.tileLayer('http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', {
    attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://cartodb.com/attributions">CartoDB</a>'
}).addTo(map);

positron.getContainer().className += ' foobar';

url="https://www.w3schools.com/cssref/pineapple.jpg";
pic=L.imageOverlay(url,[[0, -90], [90, 100]]);
map.addLayer(pic);
pic.getContainer().className += ' foobar';

</script>
</body>
</html>

2voto

IvanSanchez Puntos 491

Si tiene algo como

var pic = L.imageOverlay(url,[[0, -90], [90, 100]]);

Entonces corriendo getElement() en su instancia de L.ImageOverlay como:

var imgElement = pic.getElement();

Le conseguirá un instancia de HTMLImageElement . A continuación, puede acceder a su classList que expone una propiedad add() método. Por ejemplo

pic.getElement().classList.add('myCustomCSSClass');

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X