mrKorg
@mrKorg
web developer

Как сделать плавное изменение центра Google map?

Есть скрипт, который берёт информацию из json, строит карту и список адресов, по нажатии на один из которых центр карты меняется на соответствующие координаты. Как сделать плавное изменение центра карты? Подскажите, не могу ни чего найти.
// Map
    var map;
    var arrMarkers = [];
    var arrInfoWindows = [];
    function mapInit(){
        var lat = 49.326721,
            lng = 31.783277;
        var centerCoord = new google.maps.LatLng(lat, lng);
        var mapOptions = {
            scrollwheel: false,
            zoom: 6,
            center: centerCoord,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        map = new google.maps.Map(document.getElementById("c-where__map"), mapOptions);
        //Определяем область отображения меток на карте
        var latlngbounds = new google.maps.LatLngBounds();
        //Загружаем данные в формате JSON из файла map.json
        $.getJSON("assets/js/map.json", {}, function(data){
            $.each(data.places, function(i, item){
                $("#c-where__markers").append(
                    "<li><div class='row'><div class='imgBox'>" +
                    "<a href='#' rel='" + i + "' data-lat='" + item.lat + "' data-lng='" + item.lng + "'>" + item.image + "</a>" +
                    "</div>" +
                    "<div class='textBox'>" +
                    "<p class='title'><a href='#' rel='" + i + "' data-lat='" + item.lat + "' data-lng='" + item.lng + "'>" + item.title + "</a></p>" +
                    "<p>" + item.address + "</p>" +
                    "<p>" + item.phones + "</p>" +
                    "<p>" + item.schedule + "</p>" +
                    "</div></div></li>"
                );
                var marker = new google.maps.Marker({
                    position: new google.maps.LatLng(item.lat, item.lng),
                    map: map,
                    title: item.title
                });
                //Добавляем координаты меток
                latlngbounds.extend(new google.maps.LatLng(item.lat, item.lng));
                arrMarkers[i] = marker;
                var infowindow = new google.maps.InfoWindow({
                    content: "<div class='c-where__markers__item'><h3><a href=" + item.mainLink + ">"+ item.title + "</a></h3><div>" + item.moreText + "</div></div>"
                });
                arrInfoWindows[i] = infowindow;
                google.maps.event.addListener(marker, 'click', function() {
                    infowindow.open(map, marker);
                });
            });
            //Центрируем и масштабируем карту так, чтобы были видны все метки
            map.setCenter( latlngbounds.getCenter(), map.fitBounds(latlngbounds));
        });
    }
    $(function(){
        // Определяем карту (добавляем маркеры, балуны и список со ссылками)
        mapInit();
        // Событие клика по ссылке
        $(document).on("click", "#c-where__markers a", function(){
            var i = $(this).attr("rel"),
                lat = $(this).data("lat"),
                lng = $(this).data("lng");
            // Закрыть все балуны
            for(close=0; close < arrInfoWindows.length; close++){ arrInfoWindows[close].close(); }
            // center the map on the clicked marker
            map.setCenter(arrMarkers[i].getPosition());
            map.setZoom(10);
            arrInfoWindows[i].open(map, arrMarkers[i]);
            return false;
        });
    });
  • Вопрос задан
  • 314 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы