mxn.register('yandex', { Geocoder: { init: function() { var me = this; }, geocode: function(address, rowlimit){ var me = this; if (!address.hasOwnProperty('address') || address.address === null || address.address === '') { var parts = []; if (address.country && address.country.length > 3) {// Yandex.Maps do not support country codes in input parts.push(address.country); } if (address.region) { parts.push(address.region); } if (address.locality) { parts.push(address.locality); } if (address.street) { parts.push(address.street); } if (parts.length === 0){ parts.push(address); } address = []; address.address = parts.join(', '); } if (!address.address) { me.error_callback('Empty address passed to geocoder.'); return; } var geocoder = new YMaps.Geocoder(address.address, { results: rowlimit }); YMaps.Events.observe(geocoder, geocoder.Events.Load, function (response) { if (response.found > 0) { me.geocode_callback(response._objects); } else { me.error_callback(response); } }); YMaps.Events.observe(geocoder, geocoder.Events.Fault, function (error) { me.error_callback(error.message); }); }, geocode_callback: function(response){ var places = []; for (i=0; i 0) { location.street = street.join(', '); } var point = geoObject.getGeoPoint(); location.point = new mxn.LatLonPoint(point.getY(), point.getX()); places.push(location); } this.callback(places); } } });