Клуб API Карт

нужна помощь с кодом

alexed34
19 июля 2011, 15:51

стандартный код из примера множественного геокодирования, так как в JS полный ноль подскажите что необходимо добавить чтобы между двух меток  рассчитывалось растояние и в метках выводился произвольный текст.

 

 <script type="text/javascript">
        // Создание обработчика для события window.onLoad
        YMaps.jQuery(function () {
            // Создание экземпляра карты и его привязка к созданному контейнеру
            var map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);

            // Установка для карты ее центра и масштаба
            map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 4);

            // Координаты или адреса географических объектов
            var data = ["Москва", "Санкт-Петербург", "Екатеринбург", "Киев", "Одесса", "Сиферополь"];

            var geocoder = new MultiplyGeocoder(data);
            map.addOverlay(geocoder);

            YMaps.Events.observe(geocoder, "Load", function (geocoder) {
                alert("Геокодирование завершено");
            });
        });

        // Реализует наследование прототипа без исполнения конструктора родителя
        // Подробнее о наследовании: http://javascript.ru/tutorial/object/inheritance
        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);
    </script>

 

1 комментарий
Подписаться на комментарии к посту
Andrey.Cjkjvfnby
20 июля 2011, 11:48

Вы не только в джаваскрипте полный ноль, у вас еще проблемы с  чтением документации и поиском по клубу(интернету)

Разбейте свою задачу на 3 части:

1.Посчитать расстояние между двух меток.

2.Вывести произвольный текст в метке.

3. Описать как именно первая часть вашего вопроса и приведённый код связанны со второй частью вашего вопроса.