2

所以我有两个 html 按钮,每个按钮运行不同的功能(两个功能都在下面)。基本上,您单击两个按钮之一将 Google Maps actionlistener 添加到地图中。我已经成功地让它工作了。唯一的问题是我只希望 actionlistener 一键可用。在那一次单击之后,我希望用户必须在 actionlistener 再次“收听”之前单击另一个按钮。我希望这是有道理的。

    function addLaunch() {
google.maps.event.addListener(map, "click", function(event) {
    marker = new google.maps.Marker({
      position: event.latLng,
      map: map

    });
    infowindow.open(map, marker);
});
};
function addFishing() {  
google.maps.event.addListener(map, "click", function(event) {
    marker = new google.maps.Marker({
      position: event.latLng,
      map: map
    });
    fishinfowindow.open(map, marker);
});
};

所以我只是尝试了这个:

function addLaunch(setBoolean) {
var clicked = new Boolean(false);
    clicked.boolValue = setBoolean;
if (clicked = true) {
google.maps.event.addListener(map, "click", function(event) {
    marker = new google.maps.Marker({
      position: event.latLng,
      map: map

        });
        infowindow.open(map, marker);
        clicked.boolValue = false;
    });
   }
   else {
   google.maps.event.clearListeners(map, "click");
   }
 };

它没有用......请指出我正确的方向......(顺便说一句,按钮将“true”传递给'setBoolean'。

这可以在第一次单击后禁用所有动作侦听器。但是再次单击按钮后它不会重置。

    var temp = true;
function addLaunch() {
    if (temp == true) {
        google.maps.event.addListener(map, "click", function(event) {
    marker = new google.maps.Marker({
      position: event.latLng,
      map: map

        });
infowindow.open(map, marker);
        temp = false;
        if (temp == false) {
        google.maps.event.clearListeners(map, "click");
                }
        });
    }
}
4

3 回答 3

1

这应该解决它:

例子-

<input id="Button1" type="button" value="button" onclick="a()" />
<input id="Button2" type="button" value="button" onclick="b()" />

 <script type="text/javascript">
   var temp = true;
    function a() {
        if (temp == true) {
            alert('1'); //Replace your function's code here
            temp = false;
        }
    }
    function b() {
        if (temp == false) {
            alert('2'); // Replace your function's code here
            temp = true;
        }
    }
 </script>
于 2012-10-27T04:16:44.873 回答
1

采用google.maps.event.addListenerOnce()

文档中:

addListenerOnce(instance:Object, eventName:string, handler:Function) MapsEventListener 与 addListener 类似,但处理程序在处理第一个事件后会自行删除。

于 2012-10-27T06:10:19.320 回答
0

制作 2 个布尔标志(btn1Clicked, btn2Clicked),表示按钮的状态(单击或未单击),因此只有在btn2Clicked为 true 时才能进行侦听。

于 2012-10-27T03:09:48.330 回答