【发布时间】:2014-07-11 15:19:01
【问题描述】:
我在使用 Google Maps API 的 addListener 时遇到了一些问题。
首先,我加载一些标记并在所有标记中附加一个事件侦听器,如下所示:
google.maps.event.addListener(this.marker, 'click', function() {
var points = new cRota().loadRotaFromVeiculo(this.id_veiculo,
$("#txtDataInicial").val(),
$("#txtDataFinal").val(),
$("#txtHora1").val(),
$("#txtHora2").val()
);
this.map.removeMarkers();
this.map.removeRoutes();
this.map.removePolylines();
this.polyline = new Polyline();
this.polyline.setMap(this.map);
this.polyline.setPoints(points);
if (this.polyline.init()) {
//Adiciona a polyline no mapa
this.map.addPolyline(this.polyline);
}
//Cria o window info para mostrar as informações da rota
this.info_window = new InfoWindow();
this.info_window.setMap(this.map);
this.info_window.init();
//Adiciona um marker pra cada ponto da polyline
var marker_rota = new MarkerRota();
marker_rota.setDataLocalizacao(points[0].data_localizacao);
marker_rota.setVelocidade(points[0].velocidade);
marker_rota.setLatitude(points[0].latitude);
marker_rota.setLongitude(points[0].longitude);
marker_rota.setMap(this.map);
marker_rota.setIcon("m5.png");
marker_rota.init();
marker_rota.addListener();
//Adiciona no mapa
this.map.addMarker(marker_rota);
};
当我点击某个标记时,我从 web 服务加载数据并创建一条折线。
创建折线后,我实例化名为MarkerRota 的类。这个类扩展了另一个名为Marker的类。
所以,当我点击地图中的一个标记时,会触发该事件,然后执行所有这些操作,创建折线和其他标记。
在这个其他标记中,我还有一个 addListener 来执行其他操作。
但是,问题是,当我点击之前生成的某个标记时,会加载另一个标记,MarkerRota 创建的另一个标记的事件永远不会被触发。
这是我的MarkerRota类函数的代码
MarkerRota.prototype.addListener = function() {
//Copia a classe para uma var
var that = this;
//Adiciona o evento do click do marker
google.maps.event.addListener(this.marker, "click", (function() {
window.alert("TEST");
}));
};
this.marker 属性是 google.maps.Marker 类型的对象。
发生的另一件奇怪的事情是,当我单击第一个标记时,会再次生成另一个标记并触发单击事件。
有人知道会发生什么吗?
如果您需要更多代码或更多解释,请询问。
【问题讨论】:
标签: javascript jquery google-maps events google-maps-api-3