Tôi nghĩ đây là vấn đề phạm vi. Kể từ khi sự kiện được kích hoạt sau khi tôi đã thêm tất cả các người nghe num_markers đã luôn luôn bị ghi đè bởi chu kỳ tiếp theo trong vòng lặp.Google maps - chuyển thông tin vào một Event Listener
Có cách nào tôi có thể chuyển biến cho hàm sự kiện không?
Tôi đã thử phương pháp này nhưng không phải cho tôi. Google Maps: Event Listener only remembering final value of variable
var map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
var info_window = new google.maps.InfoWindow();
var markers = [];
function load_markers() {
var bounds_url = map.getBounds().toUrlValue();
$.ajax({
url:'/retailer-markers?bounds='+bounds_url,
dataType: 'json',
success: function(data) {
for(i = 0; i < data.length; i++) {
var marker_pos = new google.maps.LatLng(data[i]['lat'], data[i]['long']);
//Every time the listener event is called this number is the length of the array
var marker_num = get_markers_count();
markers[marker_num] = new google.maps.Marker({
position: marker_pos,
map: map,
title:data[i]['Title'],
icon: image
});
google.maps.event.addListener(markers[marker_num], 'click', function() {
info_window.setContent('hello');
var pos = markers[marker_num].getPosition();
info_window.setPosition(pos);
info_window.open(map, markers[marker_num]);
});
}
}
});
}
Đó là '.get' và' .set' là sự trợ giúp tuyệt vời cho một dự án của tôi, chúc mừng! – Kokos
Phương thức '.set' hoạt động vì lớp' google.maps.Marker' mở rộng ['google.maps.MVCObject'] (https://developers.google.com/maps/documentation/javascript/reference#MVCObject) – ruhong