Tôi hiện đang sử dụng mã sau để đặt nhiều điểm đánh dấu trên Google Map bằng API của họ.Thêm nhiều điểm đánh dấu với infowindows (API Google Maps)
Sự cố tôi gặp phải là với nhiều thông tin không hoạt động (chỉ hiển thị ảnh cuối cùng).
Có vô số câu hỏi như tôi ở đây trên SO. Trên thực tế làm cho điều đó một shitload câu hỏi :-)
Chỉ cần một ví dụ: Trying to bind multiple InfoWindows to multiple Markers on a Google Map and failing
Giải pháp cho vấn đề của tôi là kinda dễ dàng: chỉ cần kèm người nghe nhấp chuột vào một chức năng (vô danh).
Tuy nhiên những gì tôi không hiểu là lý do giải pháp của tôi không hoạt động (lưu các điểm đánh dấu và infowindows trong mảng thay vì chỉ một biến).
var markers = [];
var infowindows = [];
// add shops or malls
for (var key in data.markers) {
if (data.markers.hasOwnProperty(key)) {
infowindows[key] = new google.maps.InfoWindow({
content: data.markers[key].infowindow
});
markers[key] = new google.maps.Marker({
position: new google.maps.LatLng(data.markers[key].location.lat, data.markers[key].location.lng),
map: map,
flat: true,
title: data.markers[key].name,
draggable: false
});
var iconFile = 'http://maps.google.com/mapfiles/ms/icons/'+marker_color+'-dot.png';
markers[key].setIcon(iconFile);
google.maps.event.addListener(markers[key], 'click', function() {
infowindows[key].open(map, markers[key]);
});
}
}
Vì vậy, tôi không biết giải pháp làm cách nào để làm việc với một số chức năng kèm theo người nghe (mặc dù nó hoạt động, chưa thử nghiệm nhưng sẽ), nhưng tôi muốn biết lý do tại sao nó sẽ không hoạt động nếu tôi thêm các dấu và infowindows để mảng thay thế.
Tôi đang cố gắng theo cách này, nhưng tôi có một cảnh báo jshint "Đừng làm cho chức năng trong một vòng lặp". Nếu tôi đưa người nghe ra ngoài vòng lặp, tôi nhận được lỗi "đánh dấu được sử dụng ngoài phạm vi". Làm thế nào tôi có thể tránh nó? – aitor