A
A
Alexey Karpan2017-01-16 06:41:50
Yandex
Alexey Karpan, 2017-01-16 06:41:50

How to put all the points on the maps and then move to them?

It is necessary that when opening the page, the user sees the entire Primorsky Territory with 2 points - Ussuriysk, Vladivostok.
Below the map there is a list of these cities, by clicking on which we move to a specific city + slightly increased zoom.
Here is the code, it does not work correctly, the point is set only 1 and not where it should be. Please help me fix it!
Now, if you need to practice with the code, but there are not those cities. jsfiddle.net/vdann/YDg62/14

<script src="http://api-maps.yandex.ru/2.0/?load=package.standard&lang=ru-RU" type="text/javascript"></script>
<div id="map" style="width:100%; height:300px"></div>

<a href=\"#\" class="goto">Уссурийск</a><br>
<a href=\"#\" class="goto">Владивосток</a><br>

<div id="result"></div>

//Дождёмся загрузки API и готовности DOM.
ymaps.ready(init);

function init() {
    var result = document.getElementById('result'), // для отладки

        // в этой версии координаты просто элементы массива (и они поменяны местами)
        destinations = {
        'Общее': [43.40665415899191,132.53435398828117],
            'Уссурийск':[43.80149176264547,131.95095745767208],
                'Владивосток': [43.16744918790433,131.93554316535938]
        },

        // Создание экземпляра карты и его привязка к контейнеру с
        // заданным id ("map").
     
        myMap = new ymaps.Map('map', {
            center: destinations['Общее'],
            zoom: 10
        }, {
            searchControlProvider: 'yandex#search'
        }),
        myPlacemark = new ymaps.Placemark(myMap.getCenter(), {
            hintContent: 'Собственный значок метки',
            balloonContent: 'Это красивая метка'
        }, {
            // Опции.
            // Необходимо указать данный тип макета.
            iconLayout: 'default#image',
            // Своё изображение иконки метки.
            //iconImageHref: 'images/myIcon.gif',
            // Размеры метки.
            iconImageSize: [30, 42],
            // Смещение левого верхнего угла иконки относительно
            // её "ножки" (точки привязки).
            iconImageOffset: [-5, -38]
        });

    myMap.geoObjects.add(myPlacemark);

    // все ок
    result.textContent = 'map init';

    // куда скакать
    function clickGoto() {

        // город
        var pos = this.textContent;
        result.textContent = pos;

        // переходим по координатам
        myMap.panTo(destinations[pos], {
            flying: 1
        });
        
        myPlacemark = new ymaps.Placemark(myMap.getCenter(), {
            hintContent: 'Собственный значок метки',
            balloonContent: 'Это красивая метка'
        }, {
            // Опции.
            // Необходимо указать данный тип макета.
            iconLayout: 'default#image',
            // Своё изображение иконки метки.
            //iconImageHref: 'images/myIcon.gif',
            // Размеры метки.
            iconImageSize: [30, 42],
            // Смещение левого верхнего угла иконки относительно
            // её "ножки" (точки привязки).
            iconImageOffset: [-5, -38]
        });

        return false;
    }

    // навешиваем обработчики
    var col = document.getElementsByClassName('goto');
    for (var i = 0, n = col.length; i < n; ++i) {
        col[i].onclick = clickGoto;
        result.textContent = result.textContent + ' ' + i;
    }
}

Answer the question

In order to leave comments, you need to log in

1 answer(s)
F
freeExec, 2017-01-17
@freeExec

Why do you put a mark in the center of the map, but it is still in the old place and panTo with animation did not even start working. You should also use destinations[pos].

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question