Javascript 事件侦听器(google maps JS api)上图标标记的动态更改问题

Javascript 事件侦听器(google maps JS api)上图标标记的动态更改问题,javascript,google-maps-api-3,icons,listener,google-maps-markers,Javascript,Google Maps Api 3,Icons,Listener,Google Maps Markers,我需要能够显示一个不同的图标,以突出显示它,而标记是右键单击和确认消息正在等待用户的行动。 然后,如果答案为肯定,代码必须明确删除标记,而如果答案为否定,则必须将标记的图标重置为先前的值。 在页面执行中,它似乎忽略了命令newMarker.setIcon('delPin.png');并首先执行确认命令,这样图标就不会改变。 如果我删除If语句,侦听器会积极地更改图标,因此这意味着图像源或命令语法没有问题 有没有关于问题所在以及如何解决的建议?提前感谢您的支持。在执行确认之前,您似乎需要给浏览器时

我需要能够显示一个不同的图标,以突出显示它,而标记是右键单击和确认消息正在等待用户的行动。 然后,如果答案为肯定,代码必须明确删除标记,而如果答案为否定,则必须将标记的图标重置为先前的值。 在页面执行中,它似乎忽略了命令newMarker.setIcon('delPin.png');并首先执行确认命令,这样图标就不会改变。 如果我删除If语句,侦听器会积极地更改图标,因此这意味着图像源或命令语法没有问题


有没有关于问题所在以及如何解决的建议?提前感谢您的支持。

在执行
确认之前,您似乎需要给浏览器时间来加载和呈现新图标

 google.maps.event.addListener(newMarker, 'rightclick', ( function(newMarker){ 
        return function() {

            var icon;
            icon = newMarker.getIcon();
            newMarker.setIcon('delPin.png');

            if (confirm('Sure to delete selected marker?')) {

                 newMarker.setMap(null);      

            }else newMarker.setIcon(icon);
        }; 
    })(newMarker)); 

代码片段:

函数初始化(){
var map=new google.maps.map(
document.getElementById(“地图画布”){
中心:新google.maps.LatLng(37.4419,-122.1419),
缩放:13,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var newMarker=new google.maps.Marker({
位置:map.getCenter(),
地图:地图,
图标:'http://maps.google.com/mapfiles/ms/micons/green.png'
})
google.maps.event.addListener(newMarker,'右键单击',(函数(newMarker){
返回函数(){
var图标;
icon=newMarker.getIcon();
newMarker.setIcon('http://maps.google.com/mapfiles/ms/micons/blue.png');
setTimeout(函数(){
如果(确认('确定删除所选标记?')){
newMarker.setMap(空);
}else newMarker.setIcon(图标);
}, 1000);
};
})(纽马克);
}
google.maps.event.addDomListener(窗口“加载”,初始化)
html,
身体,
#地图画布{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}

它工作正常!我认为它不需要超时,因为图标更改指令在确认之前,谢谢您提供的示例。
google.maps.event.addListener(newMarker, 'rightclick', (function(newMarker) {
  return function() {
    var icon;
    icon = newMarker.getIcon();
    newMarker.setIcon('http://maps.google.com/mapfiles/ms/micons/blue.png');

    // delay to allow new icon to load and render.
    setTimeout(function() {
      if (confirm('Sure to delete selected marker?')) {
        newMarker.setMap(null);
      } else newMarker.setIcon(icon);
    }, 1000);
  };
})(newMarker));