Мне необходимо вывести на карту ряд объектов по списку. При этом у каждого объекта должен быть балун с названием, а при щелчке на нем выводилось бы описание. Я вывожу объекты (из 1С) при помощи кода ниже. Вопрос следующий: как передать в геокодер вместе с адресами и название/описание для метки?
// Создание обработчика для события window.onLoad
| YMaps.jQuery(function () {
| // Создание экземпляра карты и его привязка к созданному контейнеру
| var map = new YMaps.Map(YMaps.jQuery(""#YMapsID"")[0]);
|
| // Установка для карты ее центра и масштаба
| map.setCenter(new YMaps.GeoPoint(135.094069,48.4767176), 13);
| map.addControl(new YMaps.TypeControl());
| map.addControl(new YMaps.ToolBar());
| map.addControl(new YMaps.Zoom());
| map.addControl(new YMaps.MiniMap());
| map.addControl(new YMaps.ScaleLine());
|
| // Координаты или адреса географических объектов
| var data = ["+СтрокаАдресов+"];
|
| var geocoder = new MultiplyGeocoder(data);
| map.addOverlay(geocoder);
|
//| YMaps.Events.observe(geocoder, ""Load"", function (geocoder) {
//| alert(""Геокодирование завершено"");
//| });
| });
|
| // Реализует наследование прототипа без исполнения конструктора родителя
| function extend (child, parent) {
| var c = function () {};
| c.prototype = parent.prototype;
| c.prototype.constructor = parent;
| return child.prototype = new c;
| };
|
| // Множественный геокодер
| // requests - массив адресов
| function MultiplyGeocoder (requests) {
|
| // Вызов родительского конструктора
| YMaps.GeoObjectCollection.call(this);
|
| var _this = this,
|
| // Количество вызовов геокодера
| geocodeCallCount = 0,
|
| // Обработчики событий
| listeners = [];
|
| // Последовательно геокодируем все переданные адреса
| for (var i = 0, l = requests.length; i < l; i++) {
| geocode(requests[i]);
| }
|
| // Функция, отвечающая за геокодировании одного адреса
| function geocode (request) {
| // Геокодируем
| var geocoder = new YMaps.Geocoder(request);
|
| // Счетчик вызовов геокодирования увеличиваем
| geocodeCallCount++;
|
| // Сохраняем ссылки на обработчики событий
| listeners = listeners.concat(
|
| // Обработка событий Load и Fault
| YMaps.Events.observe(geocoder, [geocoder.Events.Load, geocoder.Events.Fault], function (geocoder) {
| if (geocoder.length()) {
| _this.add(geocoder.get(0));
| }
| geocodeCallCount--;
| isFinish();
| })
| );
| }
|
| // Функция для проверки окончания процесса геокодирования
| function isFinish () {
| // Если все объекты сгеокодированы, то генерируем событие завершения
| if (!geocodeCallCount) {
|
| // Событие о завершении геокодирования
| YMaps.Events.notify(_this, ""Load"", _this);
|
| // Удаление обработчиков событий
| for (var i = 0, l = listeners.length; i < l; i++) {
| listeners[i].cleanup();
| }
| }
| }
| }
|
| var ptp = extend(MultiplyGeocoder, YMaps.GeoObjectCollection);