Quiero enviar otros parámetros para esta función además del evento. Esto es para mostrar la información enviada a la función en la ventana emergente cuando se hace clic en los complementos. ¿Cómo puedo hacer esto?
var bermudaTriangle = new google.maps.Polygon({ paths: triangleCoords, strokeColor: "#fd7e14", strokeOpacity: 0.8, strokeWeight: 3, fillColor: "rgba(253,126,20,0.62)", fillOpacity: 0.35 }); bermudaTriangle.setMap(map); area_info = {"name" : "1", "shipping_cost" : 100} bermudaTriangle.addListener("click", showArrays); infoWindow = new google.maps.InfoWindow(); function showArrays(event, area) { let contentString = '<div class="form-group pr-2 pl-2">' + '<div class="text-dark">name:</div>' + area.name + '<br>'+ '<div class="text-dark">shipping_cost :</div>' + area.shipping_cost + '$'+ '<br></div>' ; // Replace the info window's content and position. infoWindow.setContent(contentString); infoWindow.setPosition(event.latLng); infoWindow.open(map); } Cuando envío información en bermudaTriangle.addListener("click", showArrays(area_info) ) a una función, no sé cómo enviar el event . Y cuando llamo a la función como esta bermudaTriangle.addListener("click", showArrays(bermudaTriangle, area_info) ) , el event no funciona correctamente. Intenté esto pero todavía no funcionó.
bermudaTriangle.addListener("click", showArrays); bermudaTriangle.area = area_info;y showArrays:
function showArrays(event, area) { let contentString = '<div class="form-group pr-2 pl-2">' + '<div class="text-dark">name:</div>' + event.currentTarget.name + '<br>'+ '<div class="text-dark">shipping_cost :</div>' + event.currentTarget.shipping_cost + '$'+ '<br></div>' ; // Replace the info window's content and position. infoWindow.setContent(contentString); infoWindow.setPosition(event.latLng); infoWindow.open(map); }El detector de eventos de click de Polygon solo toma un parámetro. Eso significa que la biblioteca no pasa más de un parámetro cuando llama a la función.
Si la información que necesita no está adjunta al objeto de event , debe recuperarla por otros medios.
Si necesita pasar los parámetros usted mismo, puede escribir una función de orden superior:
function showArrays(area) { return function (event) { let contentString = '<div class="form-group pr-2 pl-2">' + '<div class="text-dark">name:</div>' + area.name + "<br>" + '<div class="text-dark">shipping_cost :</div>' + area.shipping_cost + "$" + "<br></div>"; // Replace the info window's content and position. infoWindow.setContent(contentString); infoWindow.setPosition(event.latLng); infoWindow.open(map); }; } bermudaTriangle.addListener("click", showArrays(area));