Столкнулся с проблемой при написании плагина.
(function( $ ){
var geocoder;
var markers = [];
var methods = {
init : function(options) {
...
},
addMarker: function (marker){
if (адрес координатами) {
markers.push(marker);
}
else{
methods._geocoder(marker);
}
},
getMarker: function (id){
.....
},
_geocoder: function (marker) {
geocoder.geocode( {
'address': marker.position
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
//вычислили координаты и добавляем маркер
methods.addMarker(marker);
}
});
}
};
})( jQuery );
В функции _geocoder, используется геокодер гугла, для вычисления координат метки. Его вызов асинхронен. И возникает такая ситуация, если добавить несколько меток, вызвав метод addMarker, а потом возвратить их функцией getMarker, то получаем пустоту, потому что геокодер не успел отработать и метки не попали в массив markers.
Подскажите, пожалуйста. Как при вызове getMarker, узнать что геокодирование всех меток уже завершилось.