Javascript 函数仅在1个标记上工作
我这里的问题是函数Javascript 函数仅在1个标记上工作,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我这里的问题是函数google.maps.event.addListener(marker,'click',(function()只有在我单击第一个标记时才起作用。单击所有其他标记无效。我希望此函数对所有标记都起作用。这里有什么问题 var marker, i; for (i = 0; i < locations.length; i++) { marker = new google.maps.Marker({ position: new google.maps.L
google.maps.event.addListener(marker,'click',(function()
只有在我单击第一个标记时才起作用。单击所有其他标记无效。我希望此函数对所有标记都起作用。这里有什么问题
var marker, i;
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map,
});
google.maps.event.addListener(marker, 'click', (function (marker, i) {
return function () {
MyApp.xxx = this.position;
infowindow.setContent('x' + name[i][3] + '' + name[i][4] + 'x');
infowindow.open(map, marker);
}
})(marker, i));
}
var markerroad;
google.maps.event.addListener(marker, 'click', (function () {
var request = {
origin: MyApp.xxx,
destination: 'Kaunas',
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function (response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
})
}));
var标记,i;
对于(i=0;i
循环中没有包含第二个addListener
。请尝试以下操作:
var marker, i;
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map,
});
google.maps.event.addListener(marker, 'click', (function (marker, i) {
return function () {
MyApp.xxx = this.position;
infowindow.setContent('x' + name[i][3] + '' + name[i][4] + 'x');
infowindow.open(map, marker);
}
})(marker, i));
google.maps.event.addListener(marker, 'click', function () {
var request = {
origin: MyApp.xxx,
destination: 'Kaunas',
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function (response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
});
});
}
var标记,i;
对于(i=0;i
由于两个
addListener
调用都是针对同一项(marker
),您可能可以在每个函数中组合代码,这样就只有一个addListener
调用。其他标记是否存在于加载状态,还是在加载之后添加?如果是,您需要.on('click')
而不是.click()
它只绑定运行时出现的节点。除了上面的代码之外,没有其他用于生成标记的代码。为什么您的第二个google.maps.events.addListener
在for
循环之外?哈哈,好问题:) thanks@user1876234这解决了吗?移动到循环内部?如果解决了,我会创建一个答案