let YandexGeocoder = require('./address/yandex');
let GoogleGeocoder = require('./address/google');
let NominatimGeocoder = require('./address/nominatim');
/**
* Класс GeocoderFabric - класс-фабрика, создающая геокодер необходимого типа
*/
class GeocoderFabric {
/**
* Создает экземпляр класса <geocoderType> Geocoder
* @param {object} params - опции создания конкретного геокодера
*/
constructor(params) {
this.params = params;
const dict = {
"yandex": YandexGeocoder,
"google": GoogleGeocoder,
"nominatim": NominatimGeocoder
};
let geocoderType = params.geocoderType || "yandex";
let concreteGeocoder = dict[geocoderType];
this.geocoder = new concreteGeocoder(params);
}
getGeocoder() {
return this.geocoder;
}
}
module.exports = GeocoderFabric;