事件监听器将结果相乘

时间:2016-09-06 04:13:53

标签: javascript google-maps angular

我想获取Google地图上点击点的当前坐标。

我的代码:

let latLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);


getCoords() {
    google.maps.event.addListener(this.map, 'click', (event) => {
        console.log(event.latLng);
    });

绑定到Google地图:

  <div #map id="map" (click)="getCoords()"> </div>

点击地图我得到的是:

  • 1次点击:没有任何反应
  • 2点击:当前坐标
  • 3点击:当前坐标x 3
  • 4次点击:当前坐标x 5

如何将我的功能转换为预期的行为?

1 个答案:

答案 0 :(得分:3)

问题似乎在于,由于您为HTML中的click事件绑定了getCoords,因此每次单击地图时都会调用google.maps.event.addListener。 尝试从html中删除click处理程序: <div #map id="map"> </div>

在初始化的某处调用google.maps.event.addListener,因此只创建一次事件监听器。