Клуб API Карт

проблема с добавлением меток на карту

inity2010
21 мая 2012, 01:43

есть код

 

<script type="text/javascript">
        // Как только будет загружен API и готов DOM, выполняем инициализацию
        ymaps.ready(init);

        function init () {
            // Создание экземпляра карты и его привязка к контейнеру с
            // заданным id ("map")
            var myMap = new ymaps.Map(\'YMapsID\', {
                    // При инициализации карты, обязательно нужно указать
                    // ее центр и коэффициент масштабирования
                    center: [49.436685, 32.0585], // Черкассы
                    zoom: 12,
            // включаем масштабирование карты колесом
                behaviors: ["default", "scrollZoom"]
                }
        myMap.controls
                // Кнопка изменения масштаба
                .add(\'zoomControl\')
                // Список типов карты
                .add(\'typeSelector\')
                // Кнопка изменения масштаба - компактный вариант
                // Стандартный набор кнопок
                .add(\'mapTools\');

        //  Создаем экземпляр класса коллекции геообъектов.
                myCollection = new ymaps.GeoObjectCollection(
        var arr = new Array ("49.388807, 32.099318","49.436685, 32.0585");
            for(var i = 0; i < arr.length; i++){
               // При создании метки указываем ее свойства:  текст для отображения в иконке и содержимое балуна,
                // который откроется при нажатии на эту метку
        
                myPlacemark = new ymaps.Placemark([arr[i]], {
                    // Свойства
                    iconContent: "Щелкни по мне",
                    balloonContentHeader: "Заголовок",
                    balloonContentBody: "Содержимое <em>балуна</em>",
                    balloonContentFooter: "Подвал"
                }, {
                    // Опции
                    preset: "twirl#blueStretchyIcon" // иконка растягивается под контент
                }
        // Добавляем метку в коллекцию.    
                myCollection.add(myPlacemark);
                    
    }
// Добавляем метку на карту
            myMap.geoObjects.add(myCollection);

}
    </script>

при вызове карты появляется метка, если сдвинуть карту, то метка тоже сдвигается и стает по центру.

что не так?

 

 

3 комментария
Подписаться на комментарии к посту

Ломала голову над  примером, но первое, что бросилось в глаза

 отображается только вторая метка

после некоторых экспериментов обнаружилось, что вторая метка отображается в центре независимо от того, какие координаты для нее прописаны в массиве arr :) 

вобщем резюме после испытаний - API не понимает такой способ задания координат.

Действующий вариант:

 ...

var arr =new Array("49.388807", "32.099318","49.436685", "32.0585"); //т.е каждая координата идет отдельным элементом массива

//соотвественно меняется шаг цикла, поскольку надо перепрыгивать "через один"

for ( i = 0; i < arr.length; i+=2){
  // и по другому приходится собирать координаты при создании метки
   
myPlacemark = new ymaps.Placemark( [arr[i], arr[i+1]], { 

 ....

все остальное - без изменений 

 

Вообщем, вот рабочий пример твоего алгоритма вывода меток:

В твоем коде две ошибки:

1. arr[i] - значение типа string. Координаты должны быть числом. Браузер делает так: Берет строку: "35.43244" к примеру и неявно конвертирует в объект типа Number. А у тебя на вход подается строка "35.43244, 35.33244", интерпретатор браузера конвертирует в число только 35.43244, так как доходит до запятой и стопарится. Вот и выходит одна и тажа метка с одной координатой на любую долготу. Почему 1, а не 2? (см. Ошибку2)

2. Добавление метки в коллецию вне цикла

спасибо за разяснения ... буду пробывать