添加一次后如何添加另一个事件监听器..?

时间:2010-02-17 07:37:27

标签: javascript html google-maps

我是Javascript的新手,也是谷歌的地图。我的任务是:

  • 允许用户在地图上添加标记
  • 当用户点击标记
  • 时显示信息窗口
  • 如果标记指向吉隆坡市中心,则在信息窗口显示“吉隆坡市中心”,其他位置显示“未知位置”。

我的问题是在添加标记后我甚至无法显示信息窗口。我可以在同一个函数中添加新事件吗?该代码仅适用于添加标记。以下代码是在我从谷歌地图编辑之后:

函数MyApplication(){

 this.counter = 0;
 this.map = new GMap2(document.getElementById("map_canvas"));
  this.map.setCenter(new GLatLng(3.145423,101.696883), 13);
  var myEventListener = GEvent.bind(this.map, "click", this, function(overlay, latlng) {
     if (this.counter == 0) {
       if (latlng) {
         this.map.addOverlay(new GMarker(latlng))
         this.counter++;
       } else if (overlay instanceof GMarker) {
          //This code is never executed as the event listener is 
          //removed the second time this event is triggered
        this.removeOverlay(marker)
       }
     } else {
       GEvent.removeListener(myEventListener);
}
}); 

}

function initialize() {
var application = new MyApplication();
}

function createMarker(latlng){

  var marker = new GMarker(latlng);
  GEvent.addListener(marker,"click", function() {
   marker.openInfoWindowHtml('Petronas Twin Tower');
        });
  return marker;

}

提前谢谢。我已经开了近两个星期了。 :(请帮帮我......

1 个答案:

答案 0 :(得分:0)

不确定您要使用代码完成的任务。我假设你希望用户在任何时候只在地图上有一个标记。

我已将代码更改为:

map=new GMap2(document.getElementById("googleMap"));
map.setCenter(new GLatLng(3.145423,101.696883),13);

var myEventListener = GEvent.bind(map,"click",this,function(overlay,latlng) {

    // remove any markers from the map each time the user clicks on the map. This makes sure
    // the user can only have 1 marker on the map at any 1 time
    map.clearOverlays();

    var marker = null;

    if(latlng) {
        marker = new GMarker(latlng);
        map.addOverlay(marker);
    } else if(overlay instanceof GMarker) {
        //This code is now executed
        if (marker)
            map.removeOverlay(marker);
    }
});

为什么需要在第二次点击时删除点击事件处理程序?

以上代码不会在标记上显示气球,但至少现在是标记 当用户点击它时删除。

您能否提供一些有关您想要做的事情以及代码的确切行为的更多信息。