You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为谷歌地图Polygon的addEventListener监听函数传递除event外的额外参数

解决方案

以下是两种可直接落地的实现方式:


方案1:使用匿名函数包装回调(最直观)

直接在事件绑定处用匿名函数接收原生event参数,再把自定义业务参数一起传给处理函数即可,代码修改如下:

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}
infoWindow = new google.maps.InfoWindow();

// 核心修改:用匿名函数承接原生event,同时传入自定义参数
bermudaTriangle.addListener("click", function(event) {
  showArrays(event, area_info);
});

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>'
  ;
  infoWindow.setContent(contentString);
  infoWindow.setPosition(event.latLng);
  infoWindow.open(map);
}

方案2:给Polygon实例挂载自定义属性(适合批量生成多个图形的场景)

你之前的思路是可行的,只是取值逻辑写错了:你把业务参数挂载到了实例的area属性下,但取值时没有先取area属性,直接取了name和shipping_cost所以拿不到值,修改如下:

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}
infoWindow = new google.maps.InfoWindow();

// 给实例挂载自定义属性
bermudaTriangle.area = area_info;
bermudaTriangle.addListener("click", showArrays);

function showArrays(event) {
  // 核心修改:先取挂载的area属性,再读取内部字段,也可以用event.currentTarget.area取值
  const area = this.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>'
  ;
  infoWindow.setContent(contentString);
  infoWindow.setPosition(event.latLng);
  infoWindow.open(map);
}

内容的提问来源于stack exchange,提问作者Negar Javadzadeh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:57:03