Tengo un problema bastante extraño al tratar de armar una pantalla algo dinámica de Google Maps. Tengo superposiciones en un mapa que me gustaría llamar una función cuando hago clic. Al principio yo tenía todo lo codificado, así que tenía una función para cada superposición de la siguiente manera:¿Cómo puedo pasar un parámetro a una función sin que se ejecute de inmediato?
google.maps.event.addListener(southEast, 'click', showSouth);
function showSouth() {
// do stuff
}
Esto funcionó sin ningún problema, pero luego me hizo toda la página más dinámica, así que decidí hacer una función que pasaría una identificación y luego mostrar en función de eso, que es la forma en que creo que debería haber sido configurado originalmente de todos modos. Alteré el código para ver más como esto:
google.maps.event.addListener(southEast, 'click', showArea(1));
function showArea(id) {
// do stuff based on that id
}
La función funcionó, pero el problema es que se llama inmediatamente al cargar la página. Después de investigar, descubrí que cuando llamas a una función con los paréntesis, se llama inmediatamente a esa función y luego se hace referencia a su valor de retorno. source
Así que ahora estoy un poco atascado en cómo exactamente pasar la identificación a la función sin tener que llamar a la función de inmediato. He encontrado algunas maneras chulescas de hacerlo que podrían funcionar, pero siento que esto no debería ser algo que tenga que hackear juntos ...
Ambos funcionan como un encanto. Muchas gracias! –
@MattMcClure: De nada. –
Gracias @squint! Devolver la función resolvió mi problema de la llamada ejecutando la función en la etapa de inicialización y no en la etapa de ejecución. –