У меня проблема с асинхронной природой Javascript и Google Maps. Я добавляю некоторые маркеры на карту с помощью прослушивателя Google Maps V3 tilesloaded
.
Я не знаю, как достать эти маркеры, чтобы потом что-то с ними делать, потому что плитка загружается асинхронно, и я новичок в Javascript!
Вот код:
function show_place () {
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var marker = addMarker(lat, lng);
markers.push(marker);
// When the map boundaries move, add new markers within the bounds.
google.maps.event.addListener(map, 'tilesloaded', function() {
var bounds = map.getBounds();
$.getJSON("/markers_within_bounds/", { [variables] }, function(json){
for (i=0;i<json.length;i++) {
var map_marker = addMarker(json[i].lat, json[i].lng);
markers.push(map_marker); //Try to add markers to the array. Fail.
}
});
});
return markers;
}
$(document).ready(function() {
var markers = show_place(lat, lng);
alert(markers.length);
// Do things with the markers... if there is more than 1.
});
Предупреждение всегда показывает 1, потому что show_place
возвращается ДО того, как загрузит все маркеры. Я не могу достать дополнительные маркеры, которые были добавлены.
Как мне обойти это?
Спасибо.