javascript - 在谷歌地图事件函数中发送附加参数

标签 javascript google-maps

我有这个,工作正常:

google.maps.event.addListener(marker, 'rightclick', function(event) {
    infowindow.close();
    marker.setMap(null);
    marker.solucionado = true;
    cant_markers--;
    cant_solucionados++;
});

但我想这样做:

google.maps.event.addListener(marker, 'rightclick', deleteMarker);

function deleteMarker(marker) {
    infowindow.close();
    marker.setMap(null);
    marker.solucionado = true;
    cant_markers--;
    cant_solucionados++;
});

marker 目前不在范围内,有办法将 marker 对象作为参数发送吗?

最佳答案

marker 没有超出范围,marker 是范围将执行处理程序的地方。

通过addListener 添加的处理程序的作用域始终是监听器被添加到的对象(addListener 的第一个参数,它是标记 在你的代码中)

只需使用 this 即可访问处理程序内的标记:

function initialize() {

  var map = new google.maps.Map(document.getElementById("map-canvas"), {
      center: new google.maps.LatLng(0, 0),
      zoom: 1
    }),
    marker = new google.maps.Marker({
      map: map,
      position: map.getCenter()
    });
  google.maps.event.addListener(marker, 'rightclick', deleteMarker);

}

function deleteMarker() {
  this.setMap(null);
}
google.maps.event.addDomListener(window, 'load', initialize);
html,
body,
#map-canvas {
  height: 100%;
  margin: 0;
  padding: 0;
}
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3"></script>
<div id="map-canvas"></div>

但是,如果您不想向处理程序传递额外的参数,也可以使用 deleteMarker.call。 (或 deleteMarker.apply)

例子:

function initialize() {

  var map = new google.maps.Map(document.getElementById("map-canvas"), {
      center: new google.maps.LatLng(1, 2),
      zoom: 1
    }),
    marker = new google.maps.Marker({
      map: map,
      position: map.getCenter()
    }),
    var1 = "it ",
    var2 = "work's";
  google.maps.event.addListener(marker, 'rightclick',
    function(e) {
      deleteMarker.call(this, //the scope of the handler...the marker
        e, //the original event
        var1, //additonal argument
        var2 //another argument
      );
    }
  );

}

function deleteMarker(event, v1, v2) {
  this.setMap(null);
  alert(v1 + v2 + '@' + event.latLng)
}
google.maps.event.addDomListener(window, 'load', initialize);
html,
body,
#map-canvas {
  height: 100%;
  margin: 0;
  padding: 0;
}
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3"></script>
<div id="map-canvas"></div>

关于javascript - 在谷歌地图事件函数中发送附加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31863302/

相关文章:

javascript - 使用 Google map 和 Ruby 添加标记

javascript - 如何将谷歌地图对象重新附加到 DOM?

javascript - jQuery ajax 请求和内联 javascript

javascript - setCenter() 然后在 map Canvas 上将标记垂直向上移动

javascript - 在 javascript/ajax 内的页面上调用 php var

javascript - ExtJS - 如何根据我输入的内容过滤数据库中的数据

javascript - 如何找到第一个设置位的索引

Android GoogleMap v2 被裁剪或未完全显示

java - 在 Android Studio 中使用 Snap to Road 绘制折线

javascript - 仅在移动设备上打开 Google map 应用