Как удалить lineSymbol с карты

237
27 декабря 2017, 22:11

Не могу удалить символ с polylines

/* 
| Построение трека по заданным параметрам
| Функция построения трека 
*/
function build_road_map(options) {
    clearMap();
    /* Переменная точки движения по polyline */
    lineSymbol = {
        path: google.maps.SymbolPath.CIRCLE,
        hidden: true,
        scale: 5,
        strokeColor: '#393'
    };

    /* Область показа маркеров (Для центровки карты по области) */
    var markersBounds = new google.maps.LatLngBounds();
    /* Конвертируем JSON в объект */
    options = JSON.parse(options);     
    remove_polylines();
    /* Определяем линии google polyline для построения линий */
    polylines = new google.maps.Polyline({
        path: options.coordinates,
        geodesic: true,
        strokeColor: '#FF0000',
        strokeOpacity: 1.0,
        strokeWeight: 2,
        icons: [{
            icon: lineSymbol,
            offset: '100%'
        }]
    });
    /* Удаляем все линии */
    polylines.setMap(null); 
    /* Устанавливаем новые линии */
    polylines.setMap(map);
    /* Удаляем все маркеры */
    remove_marker();
    /* Устанавливаем маркеры (Начальный и конечный) */
    if (options.markers.is) {
        add_marker(markersBounds, options.markers.start, 'A');
        add_marker(markersBounds, options.markers.end, 'B');
    } 
    /* Центрируем и масштабируем карту */
    map.setCenter(markersBounds.getCenter(), map.fitBounds(markersBounds));
    /* Анимация движения */
    if (options.motion_animation) {
        animateCircle(polylines);
    }
}

/*
| Анимация движения
| Функция для изменения смещения символа с фиксированными интервалами
*/
function animateCircle(line) {
    var icons = line.get('icons');                
    var count = 0;
    var listener = window.setInterval(function() {
        count = (count + 1) % 200;                    
        icons[0].offset = (count / 2) + '%';
        line.set('icons', icons);
    }, 50);
}
/* 
| Управление маркерами
| Функция удаления всех маркеров
*/
function remove_marker() {
    for (var i = 0; i < markers.length; i++) {
        markers[i].setMap(null);
    }
    markers = [];
}
/*
| Управление линиями
| Функция удаления всех линий
*/
function remove_polylines() {
    for (var i = 0; i < polylines.length; i++) {
        polylines[i].setMap(null);
    }
    polylines = [];
}
/* 
| Управление маркерами
| Функция добавление маркера на карту
*/
function add_marker(markersBounds, location, label) { 
    /* Определяем широту и долготу в формате google */
    LatLng = new google.maps.LatLng(location.lat, location.lng);
    /* Определяем маркер */
    marker = new google.maps.Marker({
        position: LatLng,
        label: label,
        draggable: true,
        animation: google.maps.Animation.DROP,
        title: location.title
    });
    /* Устанавливаем маркер */
    marker.setMap(map);
    markers.push(marker);
    /* Определяем контент */
    var content = location.content;
    var infowindow = new google.maps.InfoWindow()
    /* Устанавливаем обработчик при нажатии на маркер */
    google.maps.event.addListener(marker, 'click', (function(marker, content, infowindow) { 
        return function() {
           infowindow.setContent(content);
           infowindow.open(map, marker);
        };
    })(marker, content, infowindow)); 
    /* Выводим контент для маркера */
    if (location.show_content) {
        infowindow = new google.maps.InfoWindow({ content: content });
        infowindow.open(map, marker);
    }
    /* Добавляем координаты маркера в область */
    markersBounds.extend(LatLng);
}
/*
| Сброс всей карты на чистое состояние и сброс всех переменных
| используется для отображения каждого запроса
*/
function clearMap() {
    /* Очистить все линии */
    for (var i = 0; i < polylines.length; i++) {
        polylines[i].setMap(null);
    }
    /* Очистить все маркеры */
    for (var i = 0; i < markers.length; i++) {
        markers[i].setMap(null);
    }
    /* Очистить все */
    polylines = [];
    markers = [];
}

При повторном вызове функции animateCircle(polylines) накладывается второй символ, при последующем вызове добавляется ещё один символ и так N раз.

Карту очищаю, маркеры очищаю, линии тоже. Но символ не удаляется.

Принцип работы карты такой: Инициализация карты, а потом все функции по карте без перезагрузок

Подскажите как удалить символ?

READ ALSO
Собрал такой вот скрипт при помощи гугла и мануалов, но, дальше, метод тыка не увенчался успехом

Собрал такой вот скрипт при помощи гугла и мануалов, но, дальше, метод тыка не увенчался успехом

В общем, требуется сгенерировать текст по принципу: тянем рандомно по одной строке из нескольких файлов, выбираем определенное количество...

216
Почему не подргужаются классы через composer?

Почему не подргужаются классы через composer?

Есть такая структура проекта:

150
Преобразование массива php

Преобразование массива php

Как получить из массива:

384