Pregunta sobre Leaflet Map de Wordpress:

Más que solo popup_property GeoJSON

Un usuario preguntó 👇

Primero, gracias por su gran plugin, hace que los mapas de hojas sean muy fáciles de incrustar.

Muestro un mapa cargando características de GeoJSON y ahora quiero abrir ventanas emergentes en los marcadores. Todo funciona perfectamente con una propiedad como esta:

[leaflet-geojson src="https://xrcb.exo.cat/radios-geojson/" popup_property="title"][/leaflet-geojson]

¿Alguna posibilidad de mostrar más de una característica de propiedades en la ventana emergente, idealmente con marcado HTML para crear enlaces al contenido? Imagino algo así (donde la URL y el título son características de las propiedades):

[leaflet-geojson]<a href="popup_property=url">popup_property=title</a>[/leaflet-geojson]

Pensé en piratear el plugin, ¿cuál crees que es la mejor marca para ese escenario?

Este tema fue modificado hace 2 años, 11 meses por. Razón: agregar código

(@bozdoz)

Hace 2 años, 11 meses

Eso puede ser difícil (pero puede que no lo sea).

Me gusta la idea de formatear cables como sugieres; tal vez algo como:

[leaflet-geojson]

{título}
[/leaflet-geojson]

Podrías hacer algo así en hoja-mapa / shortcodes / class.geojson-shortcode.php

La función dice lo siguiente:


function onEachFeature (feature, layer) {
    var props = feature.properties || {},
        text = popup_property && props[ popup_property ] || popup_text;
    if (text) {
        layer.bindPopup( text );
    }
}

En realidad, una hoja sirve para intersecar cadenas, llamadas L.Util.template. Entonces debería poder cambiar la función de esta manera:

function onEachFeature (feature, layer) {
    var props = feature.properties || {},
        text = popup_property && props[ popup_property ] || popup_text;
    if (text) {
        text = L.Util.template(text, props);
        layer.bindPopup( text );
    }
}

¡Eso podría ser fácil de piratear! Pruébalo si quieres ser el primero. Eso debería ser compatible con versiones anteriores, así que consideraré agregarlo a la próxima versión. ¡Gracias!

(@bozdoz)

Hace 2 años, 11 meses

Vaya, esa marca hizo un desastre con mi comentario. Aquí está la marca que sugerí:

[leaflet-geojson]
<a href={url}>{title}</a>
[/leaflet-geojson]

(@bozdoz)

Hace 2 años, 11 meses

En realidad, no quería usar L.Util.template. Lanza un error, que creo que es innecesario. Aquí está mi función sugerida:

var templateRe = /{ *([w_-]+) *}/g;
function template(str, data) {
	return str.replace(templateRe, function (match, key) {
		var value = data[key];
		if (value === undefined) {
			return match;
		}
		return value;
	});
}

Esta respuesta fue modificada hace 2 años, 11 meses por.

(@gerital)

Hace 2 años, 11 meses

Buen tiro @bozdoz, tu propuesta funciona perfectamente aplicando las plantillas y cambiando la línea 109 de la misma hoja-mapa / shortcodes / class.geojson-shortcode.php a:

text = popup_property && props[ popup_property ] || template(popup_text, feature.properties);

¡Gracias!

ps: recién probado solicitud de remolque

(@gerital)

Hace 2 años, 11 meses

Hay un detalle final en el marcado emergente generado. Probablemente un problema con layer.bindPopup (texto). Estoy agregando más marcado HTML al acceso directo de geojson, así:

[leaflet-geojson]<h3><a href="https://xrcb.exo.cat/?p={id}">{title}</a></h3>{barrio}<br>Radio {categoria}[/leaflet-geojson]

Se convierte en algo así, con mucho más

y
:

<div class="leaflet-popup-content"><p></p><br><h3><a href="https://xrcb.exo.cat/?p=22">scannerfm.com</a></h3><br><p>el Poble Sec<br>Radio libre</p></div>

(@bozdoz)

Hace 2 años, 11 meses

WordPress probablemente esté leyendo las nuevas líneas:

[leaflet-geojson]
*new line*
*new line
[/leaflet-geojson]

WordPress crea elementos para cada nueva línea. ¿Intenta ponerlo solo en línea? ¿O prueba el editor de texto en lugar del editor visual? De lo contrario, ¿está funcionando?

Algo como esto:

[leaflet-geojson]Todo el texto aquí[leaflet-geojson]

Esta respuesta fue modificada hace 2 años, 11 meses por.

(@gerital)

Hace 2 años, 11 meses

De hecho, lo tengo en una línea en la pestaña de texto, tal como lo publiqué en el último mensaje. WordPress parece estar haciendo una limpieza de HTML antes de guardarlo en la base de datos.

Esta respuesta fue modificada hace 2 años, 11 meses por.

(@bozdoz)

Hace 2 años, 11 meses

Hmmm. ¡Lo intenté y funciona muy bien! No vea etiquetas adicionales en absoluto. No estoy seguro de lo que podría estar pasando.

(@manasek)

Hace 2 años, 8 meses

Esto está detrás de mi conocimiento de codificación. Solo quiero mostrar más propiedades en una ventana emergente. ¿Cómo sería el atajo? ¿Necesito modificar algún código php del plugin? Si es así, ¿puedo lograr esto usando un plugin de fragmentos de código que generalmente uso? Gracias, Roman.

(@manasek)

Hace 2 años, 8 meses

Lo he resuelto, lamento responder a un asunto resuelto.

¿Solucionó tu problema??

0 / 0

Deja una respuesta 0

Tu dirección de correo electrónico no será publicada.