gon*_*ncy 4 javascript google-maps
我有这个,工作正常:
google.maps.event.addListener(marker, 'rightclick', function(event) {
infowindow.close();
marker.setMap(null);
marker.solucionado = true;
cant_markers--;
cant_solucionados++;
});
Run Code Online (Sandbox Code Playgroud)
但是我想这样做:
google.maps.event.addListener(marker, 'rightclick', deleteMarker);
function deleteMarker(marker) {
infowindow.close();
marker.setMap(null);
marker.solucionado = true;
cant_markers--;
cant_solucionados++;
});
Run Code Online (Sandbox Code Playgroud)
marker 当前不在范围内,有没有一种方法可以将标记对象作为参数发送?
marker不是超出范围,marker 是执行处理程序的范围。
通过添加的处理程序的范围addListener始终是已将侦听器添加到的对象(的第一个参数addListener,marker在您的代码中)
只需使用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);Run Code Online (Sandbox Code Playgroud)
html,
body,
#map-canvas {
height: 100%;
margin: 0;
padding: 0;
}Run Code Online (Sandbox Code Playgroud)
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3"></script>
<div id="map-canvas"></div>Run Code Online (Sandbox Code Playgroud)
但是,当您不想将其他参数传递给处理程序时,也可以使用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);Run Code Online (Sandbox Code Playgroud)
html,
body,
#map-canvas {
height: 100%;
margin: 0;
padding: 0;
}Run Code Online (Sandbox Code Playgroud)
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3"></script>
<div id="map-canvas"></div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3844 次 |
| 最近记录: |